添加依赖
配置
App.confi
g 添加 log4net
配置
内容如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--log4net配置-->
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<!--log4net配置-->
<log4net>
<!-- 日志默认值节点 -->
<root>
<!-- 默认日志对象级别 -->
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
<level value="all" />
<!-- 默认日志记录方式 ref为<appender>节点的name属性-->
<!-- <appender-ref ref="MyColoredConsoleAppender"/> -->
<appender-ref ref="MyRollingFileAppender" />
</root>
<logger name="logger.file.debug">
<level value="DEBUG" />
<appender-ref ref="MyRollingFileAppender" />
</logger>
<!-- AdoNetAppender:利用ADO.NET记录到数据库的日志。ConsoleAppender:将日志输出到控制台。RollingFileAppender:将日志以回滚文件(重复操作原始文件)的形式写到文件中。-->
<!-- 控制台显示日志 -->
<!-- ILog log = LogManager.GetLogger(typeof(MainWindow)); -->
<appender name="MyColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<!-- 设置不同级别控制台显示的不同颜色 -->
<mapping>
<level value="INFO" />
<foreColor value="Green" />
</mapping>
<mapping>
<level value="ERROR" />
<foreColor value="Red, HighIntensity" />
</mapping>
<!-- 记录的格式。 -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{HH:mm:ss,fff} [%-5level] %m %n" />
</layout>
<!-- 过滤器type有如下几种类型
log4net.Filter.DenyAllFilter 丢弃所有日志事件。
log4net.Filter.LevelMatchFilter 准确匹配事件等级。
log4net.Filter.LevelRangeFilter 匹配一个范围的等级。
log4net.Filter.LoggerMatchFilter 匹配一个日志器名字的开始。
log4net.Filter.PropertyFilter 匹配指定属性名称的子字符串。
log4net.Filter.StringMatchFilter 匹配事件消息的子字符串。
-->
<filter type="log4net.Filter.LevelRangeFilter">
<!-- 控制输出日志的级别范围 -->
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Error" />
</filter>
</appender>
<!-- 文件形式记录日志-Debug -->
<appender name="MyRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
<param name="File" value="F:\projectpath\blocks_editor\blocks_editor\logs\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--记录日志写入文件时,不锁定文本文件-->
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<!--Unicode编码-->
<!--<Encoding value="UTF-8" />-->
<!--最多产生的日志文件数,value="-1"为不限文件数-->
<!--<param name="MaxSizeRollBackups" value="10" />-->
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="-1" />
<!--日志文件名是否是固定不变的(是否只写到一个文件中)-->
<param name="StaticLogFileName" value="false" />
<!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]日志文件名格式为:2008-08-31.log -->
<param name="DatePattern" value="yyyy-MM-dd".log"" />
<!--<param name="DatePattern" value="yyyy-MM-dd/"-ReflectionLayout.log="""" />
<param name="DatePattern" value="yyyyMMdd/yyyyMMdd"-TimerServer.log"" />
<param name="DatePattern" value="yyyyMMdd/"TimerServer/TimerServer.log"" />-->
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
<param name="maximumFileSize" value="500KB" />
<!--记录的格式。-->
<layout type="log4net.Layout.PatternLayout">
<!--
%d, %date :表示当然的时间
%p, %level :表示日志的级别
%c, %logger :表示日志产生的主题或名称,通常是所在的类名,便于定位问题
%m, %message :表示日志的具体内容
%n, %newline :换行
%exception :表示异常信息
-->
<param name="ConversionPattern" value="%d [%t] %-5p %c:%L - %m %n" />
</layout>
</appender>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
修改AssemblyInfo.cs文件,在最后添加如下代码
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
使用
在类中引用
// typeof(类名) , 可以在日志里面显示类信息
readonly static ILog log = LogManager.GetLogger(typeof(MainWindow));
log.Info("打开新建连接窗口");
生成的日志如下:
2021-02-16 03:04:23,324 [1] ERROR blocks_editor.model.preferences.maven.MavenSettings:49 - 查找路径为:maven.maven.offline132 , 查找节点:maven.maven.offline132 失败