2009-04-28 48 views
4

我正在使用NHibernate和log4net。這是我的錯誤日誌文件的快照,用我的軟件的發行版:將調試信息和錯誤信息放入兩個不同的日誌文件(Log4net)

INFO 2009-04-28 03:07:06 - processing cascade NHibernate.Engine.CascadingAction+SaveUpdateCascadingAction for: bpojob.Generated.BusinessObjects.Job 
INFO 2009-04-28 03:07:06 - cascade NHibernate.Engine.CascadingAction+SaveUpdateCascadingAction for collection: bpojob.Generated.BusinessObjects.Job.JobItems 
DEBUG2009-04-28 03:07:06 - cascading to saveOrUpdate: bpojob.Generated.BusinessObjects.JobItem 
DEBUG2009-04-28 03:07:06 - unsaved-value: 0 
DEBUG2009-04-28 03:07:06 - transient instance of: bpojob.Generated.BusinessObjects.JobItem 
DEBUG2009-04-28 03:07:06 - saving transient instance 
DEBUG2009-04-28 03:07:06 - saving [bpojob.Generated.BusinessObjects.JobItem#<null>] 
DEBUG2009-04-28 03:07:06 - executing insertions 
DEBUG2009-04-28 03:07:06 - executing identity-insert immediately 
DEBUG2009-04-28 03:07:06 - Inserting entity: bpojob.Generated.BusinessObjects.JobItem (native id) 
DEBUG2009-04-28 03:07:06 - Opened new IDbCommand, open IDbCommands: 1 
DEBUG2009-04-28 03:07:06 - Building an IDbCommand object for the SqlString: INSERT INTO job_items (FileName, Job_Id, Status) VALUES (?, ?, ?) 
DEBUG2009-04-28 03:07:06 - Dehydrating entity: [bpojob.Generated.BusinessObjects.JobItem#<null>] 
DEBUG2009-04-28 03:07:06 - binding 'Blue hills.jpg' to parameter: 0 
DEBUG2009-04-28 03:07:06 - binding '8' to parameter: 1 
DEBUG2009-04-28 03:07:06 - binding '1' to parameter: 2 
DEBUG2009-04-28 03:07:06 - INSERT INTO job_items (FileName, Job_Id, Status) VALUES (?p0, ?p1, ?p2); ?p0 = 'Blue hills.jpg', ?p1 = '8', ?p2 = '1' 
DEBUG2009-04-28 03:07:06 - Obtaining IDbConnection from Driver 
DEBUG2009-04-28 03:07:06 - Closed IDbCommand, open IDbCommands: 0 
DEBUG2009-04-28 03:07:06 - aggressively releasing database connection 
DEBUG2009-04-28 03:07:06 - Closing connection 
DEBUG2009-04-28 03:07:06 - could not insert: [bpojob.Generated.BusinessObjects.JobItem] 
[ INSERT INTO job_items (FileName, Job_Id, Status) VALUES (?p0, ?p1, ?p2) ] 

MySql.Data.MySqlClient.MySqlException: Duplicate entry 'Blue hills.jpg' for key 'Unique' 
    at MySql.Data.MySqlClient.MySqlStream.ReadPacket() 
    at MySql.Data.MySqlClient.NativeDriver.ReadResult(UInt64& affectedRows, Int64& lastInsertId) 
    at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet() 
    at MySql.Data.MySqlClient.MySqlDataReader.NextResult() 
    at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) 
    at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() 
    at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() 
    at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd) 
    at NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert(SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder) 

正如你可以看到,所有的infodebugexception被拼湊起來,使得它非常難以通過文件篩選並且一旦錯誤出來就會尋找信息。

我想把所有的異常信息放到一個文件中,並把其他信息放到另一個文件中。而我想排除的調試信息是發佈模式。這個怎麼做?

回答

3

在你log4net.xml使用不同的文件附加器記錄的錯誤和警告

更多信息

+0

該鏈接中的大量信息,如果您在此處發佈相關部分,則會得到滿意的結果 – Matt 2015-07-27 07:13:51

0

難道你不能僅僅使用Log Parser來以任何你選擇的方式過濾/排序數據嗎?

Log4Net Dashboard是一個很好的工具用於此目的(它有一個free developer version)。

+0

這兩個日誌文件看起來鏈接現在已經死了。還有另一個問題[這裏](https://stackoverflow.com/questions/4774898/dashboard-for-log4net)尋找替代品(儘管l4ndash也列在那裏)。 – Default 2017-11-02 09:59:43

4

在下面的代碼中看到here我使用使用兩個附加器(一個用於調試,另一個是致命的)

<log4net> 
<appender name="FatalErrorLog" type="log4net.Appender.RollingFileAppender"> 
    <file value="C:\temp\Host.log" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="10MB" /> 
    <maxSizeRollBackups value="50" /> 
    <rollingStyle value="Size" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="ERROR" /> 
    <levelMax value="FATAL" /> 
    </filter> 
</appender> 

<appender name="DebugLog" type="log4net.Appender.RollingFileAppender"> 
<file value="C:\temp\HostDebug.log" /> 
<appendToFile value="true" /> 
<maximumFileSize value="10MB" /> 
<maxSizeRollBackups value="50" /> 
<rollingStyle value="Size" /> 
<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%identity------%username------%date [%thread] %-5level %logger - %message%newline" /> 
</layout> 
<filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="DEBUG" /> 
    <levelMax value="ERROR" /> 
</filter> 
</appender> 
</log4net>