1.添加應用log4net.dll
2.新增log4net.config文件,文件內容如下
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <root> <level value="ALL" /> <appender-ref ref="LogFileAppender" /> </root> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > <param name="File" value="Log.txt" /> <param name="AppendToFile" value="false" /> <layout type="log4net.Layout.PatternLayout"> <!--<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}>%n - %m%n" />--> <!--<param name="Header" value="/************************ Start ********************************/" /> <param name="Footer" value="/************************ End ********************************/" />--> <param name="ConversionPattern" value="/************************ Start ********************************/%n發生時間:%d %n事件級別:%level %n相關類名:%c%n程序文件:%F 第%L行%n日志內容:%m%n%n" /> </layout> </appender> <logger name ="MyLogger"> <level value="ERROR"></level> <appender-ref ref="LogFileAppender"></appender-ref> </logger> </log4net> </configuration>
3.修改文件AssemblyInfo.cs,在文件的最后添加以下內容
[assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = true)]
4.方法調用
private static log4net.ILog log = null;private static object lockHelper = new object(); public static log4net.ILog Log { get { if (log == null) { lock (lockHelper) { log = log4net.LogManager.GetLogger("MyLogger"); } } return log; } }public static void LogInfo(string msg) { Log.Error(msg); }
5.查看log文件以確認log正常寫入了
如何防止自定義的logger和root重復寫入日志
logger是從root繼承而來,默認的用logger寫的日志會被root重復寫一份,如何防止這種情況呢。
其實log4net提供了一種很好的解決方式,斷開logger與root的繼承關系,只要在配置文件里的logger加上屬性additivity="false" 就可以了。
即
<logger name ="MyLogger" additivity="false" > <level value="Info"></level> <appender-ref ref="LogFileAppender"></appender-ref> </logger>
注:在winform中可能會遇到“缺少log4net引用”的錯誤,這個其實很簡單。選擇項目屬性進入如下圖所示的界面,
然后將目標框架選擇為“非客戶端配置”在本圖片中為黃色高亮的,客戶端配置的為精簡版的,有許多組件不包含其中的,然后保存成功即可。
cmd中啟動exe 方法:
C:\Users>start D:\項目\HSR\trunk\src\HSRailwayStores20111128\PosCloseDate4\bin\Debug\PosCloseDate4.exe 20140331
程序中調用方法:
/********* 調用STLD解析,生成小票程序 Start ********/
Process oCallPosCloseDate4Process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "PosCloseDate4.exe " + strbussinessDay;
oCallPosCloseDate4Process.StartInfo.UseShellExecute = false;
oCallPosCloseDate4Process.StartInfo.RedirectStandardOutput = true;
oCallPosCloseDate4Process.StartInfo = startInfo;
oCallPosCloseDate4Process.Start();
oCallPosCloseDate4Process.WaitForExit();
/********* 調用STLD解析,生成小票程序 End ********/
怎樣讓控制台程序在運行時不顯示dos界面?
處理方法:打開【項目屬性】,找到【輸出類型】,改為【windows應用程序】