2009-04-28 2 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) 

Как вы можете видеть, все info, debug и exception являются починились, что делает его чрезвычайно трудно просеять через файл и искать информацию, как только появляются ошибки.

Я хочу поместить всю информацию об исключениях в файл и поместить другую информацию в другой файл. И я хочу исключить отладочную информацию: режим освобождения. Как это сделать?

ответ

3

В вашем log4net.xml использовать другой файл Appender регистратор для ошибки и предупреждения

Смотрите here для получения дополнительной информации

+0

Много информации в этой ссылке, было бы выше, если бы вы разместили соответствующий раздел здесь. – Matt

+0

Мы пишем для SO для быстрого фрагмента кода/конфигурации, а не для ссылки на официальную документацию. Минус 1. – menkow

+0

Согласовано - это было написано задолго до того, как это была политика. Я обновлю его. –

0

Не можете ли вы использовать Log Parser для фильтрации/упорядочения данных любым способом?

Log4Net Dashboard является хорошим инструментом для этой цели (и он имеет free developer version).

+0

It кажется, что ссылки уже мертвы. Другой вопрос [здесь] (https://stackoverflow.com/questions/4774898/dashboard-for-log4net) ищет альтернативы (хотя там также указан l4ndash). – Default

4

В приведенном ниже коде я использую два файла журнала с использованием двух Appender (один для отладки, другой для Fatal)

<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> 
Смежные вопросы