2016-04-03 44 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" 

因此,我认为,你要扩展这个。

相关问题