log4net寫入日誌檔案示例時一個奇怪的錯誤
昨天園子裡朋友問起:利用log4net向檔案裡記錄日誌不成功!
因為以前邀月曾經在寫入SQL時費了一番周折,以為這次應該不會有問題,如法炮製即可。可以參考
log4net寫入到SQL server的基本配置(downmoon)
不料試了一下,使用最新版版的log4net1.2.10 ,發現FileAppender老是不成功!
把步驟寫下來:
先將下載的log4net.dll新增引用,再在(用的是Console Application)AssemblyInfo.cs中新增:
這是參考官方配置寫的,應該不會有問題。不過始終沒有寫成功!
測試程式碼如下:
不知道原因,後來看到有人在winform下寫入成功,用的是log4net.Appender.RollingFileAppender
試著改了下配置檔案,結果除錯成功!修改後的配置檔案如下:
除錯結果如圖:
希望有高手解答一下這是為何?有時間自己再研究一下。 後來試了下,奇怪,以前的配置檔案也可以寫成功!難道是log4net版本的問題?下載最新原始碼1.2.10除錯後發現成功·用release生成的dll也成功· 真的是不明白。
附原始碼下載
原文地址:http://www.cnblogs.com/downmoon/archive/2009/09/28/1575576.html
因為以前邀月曾經在寫入SQL時費了一番周折,以為這次應該不會有問題,如法炮製即可。可以參考
log4net寫入到SQL server的基本配置(downmoon)
不料試了一下,使用最新版版的log4net1.2.10 ,發現FileAppender老是不成功!
把步驟寫下來:
先將下載的log4net.dll新增引用,再在(用的是Console Application)AssemblyInfo.cs中新增:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
並新增獨立的lognet.config檔案如下:Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
configSections>
<log4net>
<!--Log4net Begin by Tony 2009.09.28-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\\Log4netDemo.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
layout>
appender>
<!-- setup the root category, add the appenders and set the default level -->
<root>
<level value="DEBUG"/>
<appender-ref ref="LogFileAppender" />
root>
<!-- specify the level for some specific categories -->
<!--
-->
log4net>
<!--Log4net End-->
configuration>
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
configSections>
<log4net>
<!--Log4net Begin by Tony 2009.09.28-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\\Log4netDemo.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
layout>
appender>
<!-- setup the root category, add the appenders and set the default level -->
<root>
<level value="DEBUG"/>
<appender-ref ref="LogFileAppender" />
root>
<!-- specify the level for some specific categories -->
<!--
-->
log4net>
<!--Log4net End-->
configuration>
這是參考官方配置寫的,應該不會有問題。不過始終沒有寫成功!
測試程式碼如下:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
namespace TestLog4NetFile
{
public class Program
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
private static log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void Main(string[] args)
{
TestlogtoFile();
}
public static void TestlogtoFile()
{
string title = "log4net測試寫入File";
for (int i = 1; i < 3; i++)
{
try
{
int lng = int.Parse("testnumber");
}
catch (System.Exception ex)
{
//記錄錯誤日誌
myLogger.Error(title + "error:" + ex.Message);
//記錄嚴重錯誤
myLogger.Fatal(title + "fatal:" + ex.Message);
//記錄一般資訊
myLogger.Info(title + "info:" + ex.Message);
//記錄除錯資訊
myLogger.Debug(title + "debug:", ex);
//記錄警告資訊
myLogger.Warn(title + "warn:", ex);
Console.WriteLine("日誌記錄" + i + "完畢。");
}
}
myLogger.Error(title + "Error:" + System.DateTime.Now);
Console.WriteLine("日誌記錄{X}完畢。");
Log4netDemo.TestlogtoFile();
Console.WriteLine("當前類呼叫其他類日誌記錄完畢。");
try
{
throw new Exception(title);
}
catch (System.Exception)
{
//記錄錯誤日誌
log.Error("error");
//記錄嚴重錯誤
log.Fatal("fatal");
//記錄一般資訊
log.Info("info");
//記錄除錯資訊
log.Debug("debug");
//記錄警告資訊
log.Warn("warn");
Console.WriteLine("當前類日誌記錄完畢。");
Console.ReadKey();
}
Console.ReadKey();
}
public class Log4netDemo
{
public Log4netDemo() { }
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Log4netDemo));
public static void TestlogtoFile()
{
try
{
throw new Exception("log4net測試寫入File");
}
catch (System.Exception)
{
//記錄錯誤日誌
log.Error("error");
//記錄嚴重錯誤
log.Fatal("fatal");
//記錄一般資訊
log.Info("info");
//記錄除錯資訊
log.Debug("debug");
//記錄警告資訊
log.Warn("warn");
Console.WriteLine("日誌記錄完畢。");
Console.ReadKey();
}
}
}
}
}
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
namespace TestLog4NetFile
{
public class Program
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
private static log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void Main(string[] args)
{
TestlogtoFile();
}
public static void TestlogtoFile()
{
string title = "log4net測試寫入File";
for (int i = 1; i < 3; i++)
{
try
{
int lng = int.Parse("testnumber");
}
catch (System.Exception ex)
{
//記錄錯誤日誌
myLogger.Error(title + "error:" + ex.Message);
//記錄嚴重錯誤
myLogger.Fatal(title + "fatal:" + ex.Message);
//記錄一般資訊
myLogger.Info(title + "info:" + ex.Message);
//記錄除錯資訊
myLogger.Debug(title + "debug:", ex);
//記錄警告資訊
myLogger.Warn(title + "warn:", ex);
Console.WriteLine("日誌記錄" + i + "完畢。");
}
}
myLogger.Error(title + "Error:" + System.DateTime.Now);
Console.WriteLine("日誌記錄{X}完畢。");
Log4netDemo.TestlogtoFile();
Console.WriteLine("當前類呼叫其他類日誌記錄完畢。");
try
{
throw new Exception(title);
}
catch (System.Exception)
{
//記錄錯誤日誌
log.Error("error");
//記錄嚴重錯誤
log.Fatal("fatal");
//記錄一般資訊
log.Info("info");
//記錄除錯資訊
log.Debug("debug");
//記錄警告資訊
log.Warn("warn");
Console.WriteLine("當前類日誌記錄完畢。");
Console.ReadKey();
}
Console.ReadKey();
}
public class Log4netDemo
{
public Log4netDemo() { }
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Log4netDemo));
public static void TestlogtoFile()
{
try
{
throw new Exception("log4net測試寫入File");
}
catch (System.Exception)
{
//記錄錯誤日誌
log.Error("error");
//記錄嚴重錯誤
log.Fatal("fatal");
//記錄一般資訊
log.Info("info");
//記錄除錯資訊
log.Debug("debug");
//記錄警告資訊
log.Warn("warn");
Console.WriteLine("日誌記錄完畢。");
Console.ReadKey();
}
}
}
}
}
不知道原因,後來看到有人在winform下寫入成功,用的是log4net.Appender.RollingFileAppender
試著改了下配置檔案,結果除錯成功!修改後的配置檔案如下:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="d:\\Log4netDemo" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMddHH".log"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<!---->
<param name="ConversionPattern" value="%d [%t] %-5p %l %m %n" />
layout>
appender>
<root>
<level value="All" />
<appender-ref ref="LogFileAppender" />
root>
log4net>
configuration>
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="d:\\Log4netDemo" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMddHH".log"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<!---->
<param name="ConversionPattern" value="%d [%t] %-5p %l %m %n" />
layout>
appender>
<root>
<level value="All" />
<appender-ref ref="LogFileAppender" />
root>
log4net>
configuration>
除錯結果如圖:
希望有高手解答一下這是為何?有時間自己再研究一下。 後來試了下,奇怪,以前的配置檔案也可以寫成功!難道是log4net版本的問題?下載最新原始碼1.2.10除錯後發現成功·用release生成的dll也成功· 真的是不明白。
附原始碼下載
原文地址:http://www.cnblogs.com/downmoon/archive/2009/09/28/1575576.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-617276/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [問題]多個檔案寫入日誌報錯
- impdp/expdp報錯: ORA-39064: 無法寫入日誌檔案 ORA-29285: 檔案寫入錯誤
- 上一個日誌的錯誤
- MySQL資料庫中的日誌檔案---(1)錯誤日誌MySql資料庫
- 記一次log4j日誌寫到錯誤檔案的問題
- 一個不需要Log4Net的寫日誌的簡單方法
- MySQL 狂寫錯誤日誌MySql
- asp.net Web專案中使用Log4Net進行錯誤日誌記錄ASP.NETWeb
- Laravel日誌檔案寫入失敗(permission denied)Laravel
- MySQL 8.0.18 錯誤日誌時間慢了8個小時MySql
- Python檔案讀寫--錯誤一Python
- mysql 日誌之錯誤日誌MySql
- oracle日誌分析從列表中移去一個日誌檔案Oracle
- Oracle歸檔日誌所在目錄時間不對&&Oracle叢集日誌時間顯示錯誤Oracle
- 水煮十三《——ora-16038日誌檔案錯誤處理
- 排查錯誤日誌
- 查詢外部表出現無法開啟日誌檔案的錯誤
- 新增redo日誌的時候,錯誤新增了一個節點的redo,怎麼辦?
- Linux檢視日誌檔案寫入速度的4種方法Linux
- node專案錯誤處理與日誌
- Apche日誌系列(2):錯誤日誌(轉)
- UTL_FILE.PUT寫入txt時超過32k報ORA-29285: 檔案寫入錯誤
- 一個錯誤的資料檔案的恢復
- Mabatis配置錯誤日誌BAT
- net 日誌分析錯誤
- 日誌查詢錯誤
- 錯誤日誌檢視
- SQL Server 錯誤日誌SQLServer
- 日誌檔案和歸檔日誌檔案的關係以及如何切換日誌
- log4net日誌記錄
- rman恢復控制檔案的一個小錯誤
- SAP 錯誤日誌的調查
- zaq寫入日誌
- Java實時讀取日誌檔案Java
- 用外部表的方式查詢alert日誌檔案中ora-錯誤資訊
- 【Oracle日誌】- 日誌檔案重建Oracle
- 日誌檔案
- Logrotate日誌切割報錯 檔案不再同一個使用者組下logrotate