C# log4.net 用代码实现配置

c#中引入log4.net进行日志记录 - 需求说明: 我们在编写代码的过程当中不可避免的需要记录程序的运行日志。通过查看日志可以快速的定位我们程序运行过程当中出现的问题并及时处理解决。 所以在vs中我们可以方便的直接引用现成的日志记录包——log4.net来帮助我们记录日志,避免每次写程序还要自己完全重新编写记录日志模块的代码。提高开发效率。 引入log4.net包说明: 在VS导航栏中找到个 工具->NuGet 包管理器->管理解决方案的NuGet 程序包 在搜索框内输入log4.net然后 选中图上的第一个 阅读详情

主要有两个思路,一个是用类的属性来设置,一个是动态生成xml然后进行配置

良心之作,代码首创(我也是查了很久没找到,没办法才自己写的)

这样就可以污染程序配置文件进行写日志操作了。

干货直接上代码,个人觉得xml更靠谱些,因为网上关于xml配置的文章较多,类的要自己研究各种属性的设置

1.通过类属性配置

        log4net.Appender.RollingFileAppender[] appender = new log4net.Appender.RollingFileAppender[5];
            appender[0].File = System.IO.Path.Combine("Log\\Info\\");
            appender[0].Name = "Info";
            appender[1].File = System.IO.Path.Combine("Log\\Debug\\");
            appender[1].Name = "Debug";
            appender[2].File = System.IO.Path.Combine("Log\\Error\\");
            appender[2].Name = "Error";
            appender[3].File = System.IO.Path.Combine("Log\\Warn\\");
            appender[3].Name = "Warn";
            appender[4].File = System.IO.Path.Combine("Log\\Fatal\\");
            appender[4].Name = "Fatal";
            appender[5].File = System.IO.Path.Combine("Log\\Job\\");
            appender[5].Name = "Job";
            foreach (var a in appender)
            {
                a.AppendToFile = true;
                a.RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Composite;
                a.MaxSizeRollBackups = -1;
                a.MaximumFileSize = "1MB";
                a.LockingModel = new MinimalLock();
                a.StaticLogFileName = false;
                a.DatePattern = "yyyy-MM-dd'.txt'";
                a.Layout = new log4net.Layout.PatternLayout("$$%date%message%newline");
                a.ActivateOptions();// 这个要调用一下呢
                log4net.Config.BasicConfigurator.Configure(a);
            }
通过动态生成xml配置
 XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
            XmlElement configuration = xmlDoc.CreateElement("configuration");
            XmlElement root = xmlDoc.CreateElement("log4net");
       
         

            string[] leves = new string[] { "Info", "Debug", "Error", "Warn", "Fatal", "Job" };

            foreach(string myleve in leves)
            {

                XmlElement appender = xmlDoc.CreateElement("appender");
                appender.SetAttribute("name", "Tast"+ myleve);
                appender.SetAttribute("type", "log4net.Appender.RollingFileAppender");
                XmlElement param = xmlDoc.CreateElement("param");
                param.SetAttribute("name", "Encoding");
                param.SetAttribute("value", "utf-8");
                appender.AppendChild(param);

                XmlElement file = xmlDoc.CreateElement("file");
                file.SetAttribute("value", "Log\\"+ myleve + "\\");
                appender.AppendChild(file);

                XmlElement appendToFile = xmlDoc.CreateElement("appendToFile");
                appendToFile.SetAttribute("value", "true");
                appender.AppendChild(appendToFile);

                XmlElement rollingStyle = xmlDoc.CreateElement("rollingStyle");
                rollingStyle.SetAttribute("value", "Composite");
                appender.AppendChild(rollingStyle);

                XmlElement maxSizeRollBackups = xmlDoc.CreateElement("maxSizeRollBackups");
                maxSizeRollBackups.SetAttribute("value", "-1");
                appender.AppendChild(maxSizeRollBackups);

                XmlElement maximumFileSize = xmlDoc.CreateElement("maximumFileSize");
                maximumFileSize.SetAttribute("value", "1MB");
                appender.AppendChild(maximumFileSize);

                XmlElement lockingModel = xmlDoc.CreateElement("lockingModel");
                lockingModel.SetAttribute("type", "log4net.Appender.FileAppender+MinimalLock");
                appender.AppendChild(lockingModel);

                XmlElement staticLogFileName = xmlDoc.CreateElement("staticLogFileName");
                staticLogFileName.SetAttribute("value", "false");
                appender.AppendChild(staticLogFileName);

                XmlElement DatePattern = xmlDoc.CreateElement("DatePattern");
                DatePattern.SetAttribute("value", "yyyy-MM-dd'.txt'");
                appender.AppendChild(DatePattern);

                XmlElement layout = xmlDoc.CreateElement("layout");
                layout.SetAttribute("type", "log4net.Layout.PatternLayout");

                XmlElement conversionPattern = xmlDoc.CreateElement("conversionPattern");
                conversionPattern.SetAttribute("value", "$$%date%message%newline");
                layout.AppendChild(conversionPattern);
                appender.AppendChild(layout);

                XmlElement logger = xmlDoc.CreateElement("logger");
                logger.SetAttribute("name", myleve);
                XmlElement level = xmlDoc.CreateElement("level");
                level.SetAttribute("value", "ALL");
                XmlElement appender_ref = xmlDoc.CreateElement("appender-ref");
                appender_ref.SetAttribute("ref", "Tast"+ myleve);
                logger.AppendChild(level);
                logger.AppendChild(appender_ref);


                root.AppendChild(appender);
                root.AppendChild(logger);
            }
    
            configuration.AppendChild(root);
            xmlDoc.AppendChild(configuration);
      
            byte[] array = Encoding.ASCII.GetBytes(xmlDoc.OuterXml);
            MemoryStream stream = new MemoryStream(array);                
            StreamReader reader = new StreamReader(stream);
            log4net.Config.XmlConfigurator.Configure(reader.BaseStream);



从零配置到实时监控:ECI2828运动控制卡C#开发避坑指南(VS2015+.NET4) 本文详细介绍了ECI2828运动控制卡在C#开发中的配置与实时监控实践,涵盖硬件连接、VS2015环境搭建、核心功能实现及高级技巧。通过EtherCAT总线架构实现多轴控制,提供代码示例解决常见问题,助力开发者快速掌握工业自动化项目开发。 阅读详情

相关推荐

从零配置VSCode到完美支持Unity开发:C#插件、调试与代码补全全攻略

本文详细指导如何从零配置VSCode以完美支持Unity开发,涵盖C#插件安装、调试设置与代码补全优化。通过环境准备、插件配置、工程集成到效率提升的全流程解析,帮助开发者打造高效的Unity开发环境,特别针对C#语言特性进行深度适配,显著提升开发效率。

h6j7k8l9p0的博客 962

Log4Net学习【二】

Log4Net结构详解 当我们在描述为系统做日志这个动作的时候,实际上描述了3个点;做日志,其实就是在规定,在什么地方 用什么日志记录器 以什么样的格式做日志。把三个最重要的点抽取出来,即什么地方,日志记录器,什么格式。在Log4net中,就使用了三个最重要的组件来描述这三个要素,即Logger:日志记录器、Appender:什么地方、Layout:什么格式。下面我们就分别来看看这三个对象在...

weixin_30883311的博客 109

告别手动配置!5分钟搞定VSCode+Unity的C#代码补全(2024最新插件组合)

本文提供了2024年最新、最稳定的VSCode+Unity C#代码补全解决方案。针对智能提示失效的常见问题,推荐使用C# Dev Kit 1.4.29等特定插件组合,并详细介绍了5分钟快速配置流程、环境设置及常见问题排查方法,帮助开发者告别繁琐的手动配置,高效恢复智能提示功能。

bash7scripter的博客 1022

C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定...

C#反射实现 一、反射概念: 1、概念:     反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现。 在.NET中,反射是重要的机制,它可以动态的分析程序集Assembly,模块Module,类型Type等等,我们在不需要使用new关键的情况下,就可以动态 创建对象,使用对象。降低代码耦合性提高...

626

2021-06-06 .NET高级班 41-ASP.NET Core log4.net日志框架的使用

首先按照如下两个包 Install-Package Microsoft.Extensions.Logging.Debug Install-Package Microsoft.Extensions.Logging.Log4.AspNetCore 在根目录下新建log4net.Config <?xml version="1.0" encoding="utf-8"?> <log4net> <!-- Define some output appenders --> &lt

愚公智库 56万+

电流模架构Bandgap设计与仿真

带隙基准作为集成电路中一个重要模块,被广泛应用在低压差线性稳压(LDO)、充电电池保护芯片和通信电路、射频收发器、flash存储器等多种模拟及数模混合集成电路中,并且是片上集成系统(SOC)芯片中不可或缺的部分,为整个芯片提供精确的电压参考点............

qq_50968231的博客 5万+

C#---基于log4net的日志

1.添加log4net的引用 (要注意版本) 还可以直接vs里面直接安装 2.配置App.config 更好的是单独建立一个 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <!--注册log4net部件--> <section name="log4net" type="log4net.Config....

weixin_47328424的博客 251

S32K314 EB配置MCAL全模块讲解【Autosar——1 MCU模块详解】持续更新中

FIRC(fast internal RC Oscillator) :高速内部时钟,固定48MHZ;SIRC(Slow Internal RC Oscillator):低速内部时钟,固定32KHZ;FXOSC(Fast Crystal Oscillator Digital Controller):高速外部晶振(8-40MHZ),根据原理图选型进行配置;SXOSC():外部低速外部时钟,固定输入32.768KHZ;PLL_PHIn_CLK:时钟倍频锁相环时钟范围(640-1280MHZ);

qq_40488886的博客 1784

Log4Net学习【一】

如果项目上过线的话,那你一定知道Log是多么重要。为什么说Log重要呢?因为上线项目不允许你调试,你只能通过Log来分析问题。这时打一手好Log的重要性绝不亚于写一手好代码。项目出问题时,你要能拿出Log证明自己负责的部分没有问题,如果是自己的问题,要从Log里快速找出错误原因。如果没有从Log里找出错误原因,那一定是一件很悲催的事情,特别是在bug不容易重现的情况下。那简直就是叫天天不灵,叫地地...

weixin_30439131的博客 132

Matlab R2024a硬件支持包安装避坑指南:以Arduino为例(附离线包下载)

本文详细介绍了Matlab R2024a硬件支持包(Support Package)的安装流程,特别是针对Arduino平台的避坑指南和高效部署方法。从环境准备、离线安装方案到Arduino支持包的专项优化,提供了全面的技术细节和解决方案,帮助开发者避免常见错误,实现快速部署。

weixin_33737134的博客 449

逆向工程Python爬虫——国税局发票查验平台

前言 这是一篇含金量很高的干货文章,笔者将手把手带领各位一步一步地实现爬取国家税务总局全国增值税发票查验平台(以下简称“查验平台”)。这个想法诞生在19年初,当时在做一款通过扫描二维码就可以查验发票的小程序。 当时由于笔者学艺尚浅,没办法模拟请求爬取查验平台,所以最终采用的技术方案是通过web自动化测试工具selenium控制浏览器去模拟查验步骤,即使这样,开发过程也是困难重重,不过最后笔者和伙伴们成功实现了整套流程,最后开发出的产品口袋发票夺得了包括2019微信小程序开发大赛赛区三等奖在内的多个奖项。 但

weixin_43102379的博客 1万+

c# log4日志配置文件

【代码】c# log4日志配置文件。

积累点滴,保持自我 783

双硬盘下Ubuntu 16.04与Win10双系统的安装

之前写过一个双系统安装过程,今天再次整理的原因是想重点强调双硬盘的区别。标红的一定要注意看,那就是我自己一步一步踏出来的坑啊...   基础步骤就不再重复,重点讲区别,需要看详细步骤的童鞋(或者你只有一个硬盘)请看我上一篇博客https://blog.csdn.net/weixin_40308540/article/details/80157444   区别:双硬盘和单硬盘的区别是什么呢?...

不吃包子 1124

C#使用Log4.net记录日子文件

C#使用Log4.net记录日子文件 一、简介 1.1 Log4.net优点 几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。经验表明,日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:1.它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程...

weixin_43163153的博客 173

RK3588-NANOPC-T6移植ubuntu+xenomai内核

更具网址下载相应的内核。导入到开发板并执行内核。

qq_42007446的博客 573

Educoder:爬虫实战——求是网周刊文章爬取

第1关:获取新闻url importrequests importre defgeturls(): #**********Begin**********# url='http://www.qstheory.cn/dukan/qs/2014/2019-01/01/c_1123924172.htm' headers={ 'User-Agent':'Mozilla/5.0(Linux;Android6.0;Nexus5Buil...

weixin_46026136的博客 5254

C#/.NET Log4日志的用法

nuget安装log4net包 配置文件代码如下 <?xml version="1.0" encoding="utf-8"?> <log4net> <!-- Define some output appenders --> <appender name="rollingAppender" type="log4net.Appender.RollingFi...

一点一滴 2万+

手把手教你学Simulink--基于飞轮储能系统的场景实例:飞轮储能与锂电池混合储能系统的协同控制

本文详细介绍了基于Simulink的飞轮储能与锂电池混合储能系统协同控制建模方法。通过高通/低通滤波器实现功率分配,使飞轮处理高频波动(±100kW),锂电池承担削峰填谷(50kW)。仿真结果表明,该系统效率达88%,锂电池循环次数减少90%,投资成本比纯电池方案节省200万美元。文章包含完整的建模步骤、控制策略设计和多场景仿真分析,为构建高效、长寿、经济的智能储能系统提供了实用解决方案。

MHD0815的博客 342

log4net使用C#代码配置文件名,记录日志

最近在公司一直写webservice 然后用log4net 来记录请求的记录以及数据的结果,然后突然发现请求的频率太多,就想找一个地方自己专门记录的东西.因为不想在webconfig里边配置 所以 就想到了用 C#代码 来配置log4net public class Program { private static void Main() ...

weixin_30763397的博客 462

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C#使用Log4记录日志

Log4记录日志 第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 把下载的 log4net-1.2.11-bin-newkey解压后, 双击bin文件夹,双击net文件夹,选择针对.NET FramerWork的不同版本找到相应版本的log4net.dll; 第二步:应用Log4Net 1、在项目...

wuke666666的博客 2045

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

log4.net 配置-控制台输出带颜色的日志

一般对控制台输入的日志我们使用的Appender为ConsoleAppender,日志为白色文字。 当我们想到DEBUG,INFO,WARN,ERROR 每种日志设置一种颜色时我们需要将Appender改为ColoredConsoleAppender 然后增加相应的颜色配置 <appender name="ConsoleAppender" type=...

aiwenia0512的博客 1863

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C#中Log4的使用教程

C#中Log4的使用教程[完全图解] 没有日志的系统是不完整的系统,下面小赵四步(三分钟)教会你使用Log4; 我去,感觉上面有满满的教科书式的感觉。文章只是个人笔记,大佬请放过 第一步 使用很简单,相对于Nlog,首先第一步在Nuget上面添加包 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 第二步 添加log4net.config配置文件 代码我贴在下面 <?xml version="1.0" encoding="ut

混迹自留地 4799

log4mongo-net 项目推荐

log4mongo-net 项目推荐 项目基础介绍和主要编程语言 log4mongo-net 是一个开源项目,专门为 .NET 平台设计,用于将日志记录到 MongoDB 数据库中。该项目的主要编程语言是 C#,它充分利用了 .NET 平台的强大功能和 MongoDB 的灵活性,为开发者提供了一个高效、可靠的日志记录解决方案。 项目核心功能 log4mongo-net 的核心功能是将 log4ne...

gitblog_01020的博客 385

C#控制台程序中使用log4.net来输出日志

Apache log4net 库是一个帮助程序员将日志语句输出到各种输出目标的工具。log4net 是优秀的 Apache log4j™ 框架到 Microsoft® .NE​​T 运行时的端口。我喜欢他可以自定义输出,区分等级等特点。

thinbug的专栏 1927

C#关于log4net(Log For Net)

1 介绍 log4net(Log For Net)是Apache开源的应用于.Net框架的日志记录工具,详细信息参见Apache网站.它是针对Java的log4j(Log For Java的)姊妹工具.用过log4j的都知道,它功能强大,可配置性灵活,线程安全,对日志的输出管理和级别管理方便。具体的使用方法往下看。 首先你应该下载log4net.dll并引入到你的项目Re...

auyb52400的博客 210

C# .NET6 Log4net输出日志

打开 Visual Studio,选择 “创建新项目”,然后选择 “.NET” 类别下的 “.NET 6”,并选择 “控制台应用程序” 作为项目模板。在弹出的对话框中,搜索 “log4net” 并选择 “log4net” 包进行安装。上述代码中,我们使用 log.Debug、log.Info、log.Warn、log.Error 和 log.Fatal 方法分别记录不同级别的日志信息。在 C# .NET6 开发中,log4net 是一个常用的日志记录框架,它可以帮助我们方便地输出日志信息。

u013934107的博客 1913
上一篇: quartz.net 根据cron表达式计算最近几次的执行时间
sumirry
博客等级 码龄15年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值