我试图让我的日志记录组件按我的意愿运行。当我遇到这篇文章How to configure Enterpise Library 6.0 logging to database?
时我发现了Formatter:
<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}
Guid: {property(HandlingInstanceId)}{newline}
Timestamp: {timestamp}{newline}
Message: {message}{newline}
Exception type: {property(ExceptionType)}{newline}
Category: {category}{newline}
Severity: {severity}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Stack trace: {property(StackTrace)}{newline}
File: {property(FileName)}{newline}
Line: {property(LineNumber)}{newline}"
name="Text Formatter" />
</formatters>
包含&#34;文本格式化模板令牌&#34;哪些我不知道如何使用?
"Stack trace: {property(StackTrace)}{newline}
"
目前我的日志类看起来像这样:
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。我正在使用Enterprise Library 6.0
答案 0 :(得分:0)
LogEntry logEntry = new LogEntry();
不包含格式化程序请求的属性:
logEntry.StackTrace = "missing Informaton in your LogToFile Method"
所以我想,你必须扩展它。