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>