log4net的配置与使用
log4net解决的问题是在.Net下提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access,Oracle9i,Oracle8i,DB2,SQLite)中。
log4net主页:http://logging.apache.org/log4net/
log4net配置:
1、下载log4net.dll,在项目中添加该引用。
2、在项目AssemblyInfo.cs中添加:
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]
3、对App.config文件进行配置,如果没有App.config文件,可以通过在解决方案中,添加新建项→应用程序配置文件,进行添加。
下面是个人比较喜欢的两种配置,一种以日期的形式记录,每天的日志都写入到一个文件中,按日期可以方便查看日志。
另一种是以文件大小来记录,如果超过了大小就重新生成一个文件,最多为maxSizeRollBackups个,超过maxSizeRollBackups个则会轮训覆盖。
level定义记录的日志级别,定义记录哪个级别以上的日志,级别由高往低依次是:None > Fatal > ERROR > WARN > DEBUG > INFO >ALL
<?xml version="1.0"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <root> <level value="ALL"/> <!---日志级别--> <appender-ref ref="RollingLogFileAppender"/> </root> <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是指定使用哪种介质--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Log\\"/><!-- 输出到什么目录--> <appendToFile value="true"/><!-- 是否到附加到文件中--> <rollingStyle value="Date"/><!-- 文件创建方式,以日期的方式记录--> <datePattern value="yyyy-MM-dd".txt""/><!-- 文件格式--> <staticLogFileName value="false"/><!--否采用静态文件名,文件名是否唯一--> <layout type="log4net.Layout.PatternLayout"> <!---日志内容布局--> <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> <!---另一种Appender--> <appender name="DateFileInfoAppender" type="log4net.Appender.RollingFileAppender"> <file value="Log\\log.txt"/> <!-- 输出到什么文件--> <appendToFile value="true"/> <!-- 是否到附加到文件中--> <rollingStyle value="Size" /> <maxSizeRollBackups value="10"/> <!--日志文件的最大个数--> <maximumFileSize value="10MB"/> <!-- 单个日志文件最大的大小--> <staticLogFileName value="true"/> <!--否采用静态文件名,文件名是否唯一--> <layout type="log4net.Layout.PatternLayout"> <!---日志内容布局--> <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
log4net的配置官方主页:http://logging.apache.org/log4net/release/config-examples.html
4、log4net的使用:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using log4net; namespace ConfigTest { public static class TestClass { private static readonly ILog log = LogManager.GetLogger(typeof(TestClass)); public static void TestLog() { for (int i = 0; i < 1000; ++i) { log.Info(string.Format("Log info {0}",i)); log.Debug(string.Format("Log debug {0}", i)); } } } class Program { static void Main(string[] args) { try { TestClass.TestLog(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
参考:
http://zhoufoxcn.blog.51cto.com/792419/429988/
作者:阿凡卢
出处:https://www.cnblogs.com/luxiaoxun/p/3583386.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App