简要的Log4Net 应用配置
只是记录不描述。 详细看官方网站。
Winform
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
Web
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
<log4net> <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log/Log.txt" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value="yyyyMMdd".txt"" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%n" /> </layout> </appender> <root> <level value="INFO" /> <appender-ref ref="FileAppender" /> </root> </log4net>
在Namespace的上方写一个,那个Dll 需要就要往那个dll加。
Winform or Dll 需要加入下面一项,一般加入Assembly.cs
[assembly: XmlConfigurator(Watch = true)] namespace namespace {
}
LOG Level
OFF>FATAL > ERROR > WARN > INFO > DEBUG > ALL
不锁死文件:<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
变量集合
%newline%
Filter
在appender里面的filter,我一般用于分离输出的,如Error Fatal一个文件,INFO WARN一个文件之类的。
下面这个是只输出 WARN 和 INFO信息。 最后一个的DenyAllFilter 是必须的。Value不区分大小写,很有Microsoft的风格。
<filter type="log4net.Filter.LevelMatchFilter">
<param name="LevelToMatch" value="WARN" />
</filter>
<filter type="log4net.Filter.LevelMatchFilter">
<param name="LevelToMatch" value="INFO" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
通过编程方式动态改变Level
private void SetLogingLevel(string strLogLevel) { string strChecker = "WARN_INFO_DEBUG_ERROR_FATAL"; if (String.IsNullOrEmpty(strLogLevel) == true || strChecker.Contains(strLogLevel) == false) throw new Exception(" The strLogLevel should be set to WARN , INFO , DEBUG ,"); log4net.Repository.ILoggerRepository[] repositories = log4net.LogManager.GetAllRepositories(); //Configure all loggers to be at the debug level. foreach (log4net.Repository.ILoggerRepository repository in repositories) { repository.Threshold = repository.LevelMap[strLogLevel]; log4net.Repository.Hierarchy.Hierarchy hier = (log4net.Repository.Hierarchy.Hierarchy)repository; log4net.Core.ILogger[] loggers = hier.GetCurrentLoggers(); foreach (log4net.Core.ILogger logger in loggers) { ((log4net.Repository.Hierarchy.Logger)logger).Level = hier.LevelMap[strLogLevel]; } } //Configure the root logger. log4net.Repository.Hierarchy.Hierarchy h = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository(); log4net.Repository.Hierarchy.Logger rootLogger = h.Root; rootLogger.Level = h.LevelMap[strLogLevel]; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步