log4net日志分类和自动维修实例教程
复制代码代码如下所示:
公共静态ILog GetLogger(字符串repositoryname = )
{
如果(string.isnullorempty(repositoryname))返回logmanager.getlogger(defalut );
iloggerrepository库= null;
尝试
{
库= logmanager.getrepository(repositoryname);
}
catch(异常){ }
发现/返回ILOG
如果(存储库)!= null)
LogManager.GetLogger(repositoryname回报,defalut );
找不到创建,可以创建多个线程,有
尝试
{
库= logmanager.createrepository(repositoryname);
}
catch(例外)
{
库= logmanager.getrepository(repositoryname);
}
配置日志级别 / /读取appSettings默认配置
无功appset = configurationmanager.appsettings.allkeys;
找到日志级别
const string LogLevel =日志级别;
无功hassettings = Array.IndexOf(appset,LogLevel);
如果(hassettings > 1)
{
VaR水平= ConfigurationManager里ToLower(){ LogLevel };
如果(级别= 所有)存储库;
否则,如果为(级别=调试)存储库;
否则,如果(级别=)存储库;
否则,如果为级别,则警告;
否则,如果(级别= 错误)存储库;
否则,如果(级别=致命)存储库;
否则,如果(级别=关闭)存储库;
}
其他存储库;
找到 /输出插件
const string logappender =logappender ;
hassettings = array.indexof(appset,logappender);
如果(hassettings > 1)
{
VaR的appender = ConfigurationManager里{ logappender }。ToLower(),Split(',');
foreach(在appender VAR appender)
{
如果(appender = =rollingfile )LoadRollingFileAppender(库);
如果(appender = =控制台)LoadConsoleAppender(库);
如果(appender = =微量)LoadTraceAppender(库);
}
}
其他的LoadRollingFileAppender(库);
LogManager.GetLogger(repositoryname回报,默认);
}
log4net自动维护ILOG和ILoggerRepository,所以你不必拯救它,使它通过logmanger。但是我没有找到一个方法来找出是否指定iloggerrepository存在,所以我认为尽量赶在上面的代码中,由于我们配置log4net通过代码,我们仍然要设置日志级别通过配置输出型,所以我选择配置文件里,并将其配置为所有iloggerrepository。原因是没有配置的各项功能,主要是因为配置问题。如果你真的想这样做,你可以在log4net不同记录器直接配置,它将更好地通过loggerName。
日志维护
下一个问题是,如何删除日志
log4net可以配置RollingFileAppender,翻译是一个滚动文件。以MaximumFileSize和maxsizerollbackups 2参数,这个目标是可以实现的。当日志文件达到一定的规模,一个新的文件,将生成的文件数量最多的是maxsizerollbackups,但前提是文件名的一致性。
例如,我们使用以下配置:
复制代码代码如下所示:
这样做的效果是,日志是一个小时,和备份每小时的最大数量是1000,和一个日志文件是在每500kb形成。作为日数增加,文件越来越多,我们需要清理。所以以上的配置可以改变一点点:
复制代码代码如下所示:
日志文件名是主要设置的,它是一个不允许更改的静态名称。从那时起,日志文件最多为1000个,而不需要手动操作,您将看到日志文件名:
日志。日志。日志。1日志。日志2…默认值是文件名。最后一个数字是最大和最老的时间。因此,检查新日志主要在第一个文件名中。
另一个提示:如果Appender是建立在静态文件名,那么历史记录将被覆盖,这是非常关心的历史记录中的应用。建议不要使用这个计划。如果我们清理日志,我们仍然应该诚实地写代码。