2016-04-03 48 views
3

我想讓我的日誌記錄組件按我的意願工作。當我遇到這個帖子How to configure Enterpise Library 6.0 logging to database?企業庫日誌記錄和文本格式化程序模板令牌。如何?

來到我發現格式化:

<formatters> 
    <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Application: {property(ApplicationName)}{newline}&#xA;Guid: {property(HandlingInstanceId)}{newline}&#xA;Timestamp: {timestamp}{newline}&#xA;Message: {message}{newline}&#xA;Exception type: {property(ExceptionType)}{newline}&#xA;Category: {category}{newline}&#xA;Severity: {severity}{newline}&#xA;Machine: {localMachine}{newline}&#xA;App Domain: {localAppDomain}{newline}&#xA;ProcessId: {localProcessId}{newline}&#xA;Process Name: {localProcessName}{newline}&#xA;Stack trace: {property(StackTrace)}{newline}&#xA;File: {property(FileName)}{newline}&#xA;Line: {property(LineNumber)}{newline}" 
    name="Text Formatter" /> 
</formatters> 

包含「文本格式化模板令牌」,我不知道怎麼用?此刻

"Stack trace: {property(StackTrace)}{newline}&#xA" 

我的日誌類看起來是這樣的:

public class Logging : Microsoft.Practices.EnterpriseLibrary.Logging.LogEntry 
{  
    /// <summary> 
    /// Logs an error message. 
    /// </summary> 
    /// <param name="Message"></param> 
    /// <param name="processEvent"></param> 
    public void LogToFile(string message, System.Diagnostics.TraceEventType severity) 
    { 
     try 
     { 
      LogWriterFactory logWriterFactory = new LogWriterFactory(); 
      LogWriter logWriter = logWriterFactory.Create(); 
      LogEntry logEntry = new LogEntry(); 
      LogSource logsource = new LogSource("ESRAlarmStatistik"); 

      logEntry.Message = message.ToString(); 
      //logEntry.EventId = Convert.ToInt32(processEvent); 
      logEntry.Priority = 2; 
      logEntry.Severity = severity; 
      logEntry.TimeStamp = System.DateTime.Now; 

      logWriter.Write(logEntry); 

      //Unlocks the logfile so that it's possible to delete it. 
      logWriter.Dispose(); 
     } 
     catch (LoggingException ex) 
     { 
      throw ex; 
     } 
    } 
} 

我想記錄有關異常的不僅僅是消息的更多信息。例如。作爲文本格式化程序模板令牌建議的堆棧跟蹤是可能的。

但是,我不知道該怎麼做?有沒有人有過如何實現對上述文本格式化器的支持的經驗?

日誌輸出看起來像這樣的時刻:

---------------------------------------- 
Application: <Error: property ApplicationName not found> 

Guid: <Error: property HandlingInstanceId not found> 

Timestamp: 2016-04-03 10:16:20 

Message: IngresDatabaseAccessor.DBConnect() - Database connection failed. Connection string: Host=192.168.0.114;User Id=ingres;PWD=ingres;Database=esra_bas---Database does not exist: 'esrk_bas'. 
The connection to the server has been aborted. 

Exception type: <Error: property ExceptionType not found> 

Category: General 

Severity: Error 

Machine: KSD53 

App Domain: ESRAlarmStatistik.exe 

ProcessId: 15464 

Process Name: C:\DATA\Development\Uddeholm\ESR\Source\Common\ESRAlarmStatistik\ESRAlarmStatistik\bin\Debug\ESRAlarmStatistik.exe 

Stack trace: <Error: property StackTrace not found> 

File: <Error: property FileName not found> 

Line: <Error: property LineNumber not found> 

---------------------------------------- 

親切的問候!

P.s.我使用企業庫6.0

回答

0

它看起來像你的

LogEntry logEntry = new LogEntry(); 

不包含屬性,由格式要求:

logEntry.StackTrace = "missing Informaton in your LogToFile Method" 

因此,我認爲,你要擴展這個。

相關問題