Log4Net使用示例
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <!--日志配置部分--> <log4net> <root> <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--> <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录--> <!--如果没有定义LEVEL的值,则缺省为DEBUG--> <!--<level value="ALL"/--> <!--向日志文件输出日志信息--> <appender-ref ref="RollingFileAppender"/> <!--appender-ref ref="ConsoleAppender"/--> <!--向控制台输出日志信息--> </root> <!--创建log名称可以在后续代码中使用--> <logger name="appError"> <level value="ALL" /> <appender-ref ref="appErrorLog" /> </logger> <logger name="Operation"> <level value="ALL"/> <appender-ref ref="OperationLog" /> </logger> <appender name="OperationLog" type="log4net.Appender.RollingFileAppender"> <!--日志文件名开头--> <file value="Log/程序日志/"/> <!--多线程时采用最小锁定--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置--> <DatePattern value="yyyy-MM-dd"Linkto.log""/> <!--是否追加到文件,默认为true,通常无需设置--> <AppendToFile value="true"/> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <!--变换的形式为日期,这种情况下每天只有一个日志--> <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义--> <RollingStyle value="Date"/> <!--变换的形式为日志大小--> <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义--> <!--<RollingStyle value="Size"/>--> <!--每天记录的日志文件个数,与maximumFileSize配合使用--> <!--<MaxSizeRollBackups value="10"/>--> <!--每个日志文件的最大大小--> <!--可用的单位:KB|MB|GB--> <!--不要使用小数,否则会一直写入当前日志--> <maximumFileSize value="100MB"/> <StaticLogFileName value="false"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date[%t]%p: %m%n"/> </layout> </appender> <appender name="appErrorLog" type="log4net.Appender.RollingFileAppender"> <!--日志文件名开头--> <file value="Log/错误日志/"/> <!--多线程时采用最小锁定--> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置--> <DatePattern value="yyyy-MM-dd"LinktoError.log""/> <!--是否追加到文件,默认为true,通常无需设置--> <AppendToFile value="true"/> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <!--变换的形式为日期,这种情况下每天只有一个日志--> <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义--> <RollingStyle value="Date"/> <!--变换的形式为日志大小--> <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义--> <!--<RollingStyle value="Size"/>--> <!--每天记录的日志文件个数,与maximumFileSize配合使用--> <!--<MaxSizeRollBackups value="10"/>--> <!--每个日志文件的最大大小--> <!--可用的单位:KB|MB|GB--> <!--不要使用小数,否则会一直写入当前日志--> <maximumFileSize value="100MB"/> <StaticLogFileName value="false"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date[%t]%p: %m%n"/> </layout> <!--指定过滤器--> <!--<filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter>--> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /> </startup> </configuration>
1.配置log4Net的文件写入
2.在Assmblyinfo.cs中使用改配置信息
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // 有关程序集的一般信息由以下 // 控制。更改这些特性值可修改 // 与程序集关联的信息。 [assembly: AssemblyTitle("WindowsFormsLog4Net")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("WindowsFormsLog4Net")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] //指定配置文件类型 [assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)] //配置log4net //指定配置文件 //[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] // 将 ComVisible 设置为 false 会使此程序集中的类型 //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 //请将此类型的 ComVisible 特性设置为 true。 [assembly: ComVisible(false)] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("eb1a4b05-7a43-4f6a-81ec-3020b052a34d")] // 程序集的版本信息由下列四个值组成: // // 主版本 // 次版本 // 生成号 // 修订号 // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
3.代码中使用
namespace WindowsFormsLog4Net { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ILog m_log = LogManager.GetLogger("Operation"); m_log.Debug("这是一个Debug日志" + 2); ILog m_log2 = LogManager.GetLogger("appError"); m_log2.Debug("这是一个Debug日志" + 2); m_log2.Info("这是一个Info日志"); } }
4.输出结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话