官网:https://logging.apache.org/log4net/
文本列子下载地址: log4net.config
Level:ALL < DEBUG < INFO <WARN <ERROR < FATAL < OFF
root和logger:root是根级的,logger是专门设置某一个,如果同时满足,那就会都执行
layout 下的 conversionPattern:
% 序列%%输出单个百分号 %n=%newline "\n", or "\r\n" %a 程序名称 %c logger名称 %C=%class=%type 类型名 Log4Demo.Program %type{1}=Program %d 日期 %date=%date{yyyy:MM:dd HH:mm:ss,fff} 日期,可以自定义格式 %exception 错误消息 %F=%file 文件路径 F:\Code\WidowsServer\Log4Demo\Program.cs %l=%location 获取打印的位子 Log4Demo.Program.Main(F:\Code\WidowsServer\Log4Demo\Program.cs:20) %p=%level 日志等级 %logger 获取logger名称,%logger{1} 只获取一个的长度,以 . 分割 Log4Demo.Program Program %m=%message 消息 &M=%method 方法名 %X=%mdc=%P=%properties=%property 属性 %r=%timestamp 时间戳 %stacktrace Log4Demo.Program.Main %stacktracedetail Log4Demo.Program.Main() %t=%thread 线程id %x=%ndc
①nueget包进行引用
②添加一个log4net.config配置文件,设置属性 复制到出入目录:始终复制
FileInfo log2 = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"); log4net.Config.XmlConfigurator.Configure(log2); //配置 ILog log = log4net.LogManager.GetLogger(typeof(Program));//实例 try { log.Info("打印哈哈"); string a = "a"; int i = int.Parse(a); } catch (Exception ex) { log.Error("cuowu", ex); } Console.ReadLine();
列子:ConsoleAppender
<!-- 控制台日志,信息会打印到控制显示--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m" /> </layout> </appender>
ColoredConsoleAppender
<!--控制台打印颜色--> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="Red" /> <!--<backColor value="Red, HighIntensity" />--> </mapping> <mapping> <level value="INFO" /> <foreColor value="Green" /> <!--<backColor value="Black, HighIntensity" />--> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m%n" /> <!--<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />--> </layout> </appender>
FileAppender
<!--文件--> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="log.txt" /> <!--文件名--> <appendToFile value="true" /> <!--是否追加--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="【时间】:%date{yyyy:MM:dd HH:mm:ss}%n【等级】:%p%n【方法】:%stacktracedetail%n【信息】:%m%n" /> </layout> </appender>
到了我们的主要的了:
RollingLogFileAppender
普通的日志
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <param name= "File" value= "Log\"/> <!--是否是向文件中追加日志--> <param name= "AppendToFile" value= "true"/> <!--log保留天数--> <param name= "MaxSizeRollBackups" value= "10"/> <!--日志文件名是否是固定不变的--> <param name= "StaticLogFileName" value= "false"/> <!--日志文件名格式为:2008-08-31.log--> <param name= "DatePattern" value= "yyyy-MM-dd".read.log""/> <!--日志根据日期滚动--> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date{HH:mm:ss,fff} %-5p-%m%n" /> </layout> </appender>
输出成htm查看,我们需要对我们的Info和Error输出到两个文件进行区分
<!-- htm页面查看 --> <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log\Info\" /> <!--路径或者文件名--> <appendToFile value="true" /> <!--是否追加--> <rollingStyle value="Composite" /> <!--滚动规则--> <maxSizeRollBackups value="-1" /> <!-- 备份文件的个数,只存一个设置为-1--> <maximumFileSize value="10MB" /> <!-- 单个日志文件最大的大小--> <staticLogFileName value="false" /> <!-- 是否使用静态文件名,这是设置为false,下面才能自定义--> <DatePattern value="yyyyMMdd".htm"" /> <param name="Encoding" value="utf-8" /> <layout type="log4net.Layout.PatternLayout"> <!--这里的格式需要跟html中的样式一样去写 <BR>=<BR> 换行 这样类似的 --> <conversionPattern value="<HR COLOR=blue>【时间】:%date{yyyy:MM:dd HH:mm:ss}<BR>【等级】:%p<BR>【方法】:%stacktracedetail<BR>【信息】:%m<BR><HR Size=1>" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <!--使用过滤,只记录INFO和WARN--> <levelMin value="INFO" /> <levelMax value="WARN" /> </filter> </appender> <!-- htm页面查看错误--> <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log\Error\" /> <!--路径或者文件名--> <appendToFile value="true" /> <!--是否追加--> <rollingStyle value="Composite" /> <!--滚动规则--> <maxSizeRollBackups value="-1" /> <!-- 备份文件的个数,只存一个设置为-1--> <maximumFileSize value="10MB" /> <!-- 单个日志文件最大的大小--> <staticLogFileName value="false" /> <!-- 是否使用静态文件名,这是设置为false,下面才能自定义--> <DatePattern value="yyyyMMdd".htm"" /> <param name="Encoding" value="utf-8" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="<HR COLOR=red>【时间】:%date{yyyy:MM:dd HH:mm:ss}<BR>【等级】:%p<BR>【方法】:%stacktracedetail<BR>【信息】:%m<BR><HR Size=1>" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter> </appender>
Console控制台程序如何记录信息到我们的web端?
这里需要我们动态的取改变file路径来完成,在同一个解决方案下面,想把错误写在一起,你也可以直接设置file vlue="E:\XX\DD"
FileInfo log2 = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"); log4net.Config.XmlConfigurator.Configure(log2); //配置 string sw = AppDomain.CurrentDomain.BaseDirectory;//debug\\ //得到解决方法路径 string ww = GetDirectoryName(sw, 4); string filePath = Path.Combine(ww, "MvcTest\\");//新的路径 log4net.Repository.ILoggerRepository ilr = LogManager.GetRepository(); //获取仓储 IAppender[] ap = ilr.GetAppenders(); //获取Appenders //通过查询得到你想要的Appenders,然后设置 RollingFileAppender rf = ap.FirstOrDefault(x => x.Name == "InfoRollingFileAppender") as RollingFileAppender; rf.File = filePath+"Info\\"; rf.ActivateOptions(); //激活 RollingFileAppender rf2 = ap.FirstOrDefault(x => x.Name == "ErrorRollingFileAppender") as RollingFileAppender; rf2.File = filePath+"Error\\"; rf2.ActivateOptions(); //激活 ILog log = log4net.LogManager.GetLogger(typeof(Program));//实例
查看一下
原文:https://www.cnblogs.com/Sea1ee/p/10582210.html