1.新建log4net配置文件,名字隨便起,位置隨便放(這裏我是/Configs/testlog4.config)
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <logger name="MLogError"> <level value="ERROR" /> <appender-ref ref="MErrorAppender" /> </logger> <logger name="MLogInfo"> <level value="INFO" /> <appender-ref ref="MInfoAppender" /> </logger> <appender name="MErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Logs\Error\error.txt" /> <param name="DatePattern" value="yyyyMMdd"/> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaximumFileSize" value="1MB" /> <param name="RollingStyle" value="Size" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender> <appender name="MInfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Logs\Info\" /> <!--多少條寫入--> <bufferSize VALUE="0" /> <!-- True/false,默認爲true。當文件存在時,是否在原文件上追加內容。 --> <param name="AppendToFile" value="true" /> <!-- 備份日誌數目,默認爲0。在CountDirection爲負數時有效。 --> <param name="MaxSizeRollBackups" value="100" /> <!-- 當RollingStyle爲Composite或Size,這裏設置最大文件大小(能夠KB,MB,GB爲單位,默認爲字節) --> <param name="MaxFileSize" value="10240" /> <!--StaticLogFileName若是爲true,則當前日誌文件(相對於歷史日誌文件而言)的文件名只取File參數。若是爲false,則文件名取File+DatePattern。 --> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM\\yyyyMMdd".log"" /> <!-- 建立新文件的方式,可選爲Size(按文件大小),Date(按日期),Once(每啓動一次建立一個文件),Composite(按日期及文件大小),默認爲Composite --> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n異常時間:%d %n異常級別:%-5p %n異常內容:%m%n" /> </layout> </appender> </log4net> </configuration>
2.新建TestHelper類封裝下
public class TestHelper { public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("MLogInfo"); public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("MLogError"); /// <summary> /// 普通的文件記錄日誌 /// </summary> /// <param name="info"></param> public static void WriteLog(string info) { if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// 錯誤日誌 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void WriteLog(string info, Exception se) { if (logerror.IsErrorEnabled) { logerror.Error(info, se); } } }
3.配置AssemblyInfo.cs文件
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"Configs/testlog4.config", Watch = true)]
4.設置testlog4.config文件屬性(設爲始終複製,否則發佈時候拷不過去)
5.調用
TestHelper.WriteLog("adasdasdasdas");
6.日誌展現
7.配置說明
%m(message):輸出的日誌消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出當前語句運行的時刻
%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數
%t(thread id):當前語句所在的線程ID
%p(priority): 日誌的當前優先級別,即DEBUG、INFO、WARN…等
%c(class):當前日誌對象的名稱
%L:輸出語句所在的行號
%F:輸出語句所在的文件名
%-數字:表示該項的最小長度,若是不夠,則用空格填充app
log4j中%5p的含義
由於日誌級別分別有error,warn,info,debug,fatal5種,有些是5個字母的,有些是4個字母的,若是直接寫%p就會對不齊,%-5p的意思是日誌級別輸出左對齊,右邊以空格填充,%5p的意思是日誌級別輸出右對齊,左邊以空格填充。spa
一、直接%p線程
二、%-5pdebug
三、%5p3d