c#中使用log4net
需求在winform程序中使用listview或者textbox显示日志,并且也要将日志文件记录在单独的txt日志文件中
在网上找了个例子,可以实现显示在textbox中,但是一直没有打印txt文本日志文件。究其原因是log4net配置文件需要在debug目录下,且需要确认是最新修改的内容。
需要确认的关键步骤如下:
- 正确引用log4net,最好是在nuget管理工具里面选择对应版本。
- log4net.dll 需要在debug目录下
- 配置文件log4net.config需要在debug目录下
- AssemblyInfo.cs文件中 添加:[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
关键配置文件如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--在配置选项中加入log4net的引用-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="LogFile" type="log4net.Appender.FileAppender" >
<!--日志路径-->
<param name= "File" value= "D://sss.txt"/>
<!--是否是向文件中追加日志-->
<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".log""/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<!--不要使用小数,否则会一直写入当前日志-->
<maximumFileSize value="2MB"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} --%-5p-- %m%n" />
</layout>
</appender>
<appender>
<!--一个配置文件可以有很多appender,一个appender节就相当于一个日志输出介质或方法。-->
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="logApp">
<!--定义logger对象的名字为logApp,以方便在代码中使用logger-->
<!--配置项可以不配置-->
<level value="ALL" />
<!--定义输出的信息等级为所有其中包括Fatal.Error.Warn.Info.Debug-->
</logger>
<root>
<!--定义日志输出的方式和等级-->
<level value="Info" />
<appender-ref ref="LogFile" />
<!--选择了文件输出,注意粗体部分对应的名称-->
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
</configuration>