2012-05-15 91 views
0

有没有人知道写入事件日志下面的aspnetdb_log文件是一个snippit的代码我在网上找到的原始代码行,但Log.LogException(..)不工作,或者我不知道库使用,所以我用EventLog。我想要做的是记录一个错误或事件到aspnetdb_log文件将我的代码工作,我还没有测试过,因为我处于开始阶段,如果有人可以做出任何更正,那么请留下答复谢谢。这是一个自定义的成员提供WriteToEventLog日志记录异常的sql aspnet_db日志文件

private void WriteToEventLog(Exception e, string action) 
{ 
    string message = action + "-" + e.Message; 

    if (!EventLog.SourceExists("aspnetdb_log")) 
    { 
     EventLog.CreateEventSource("aspnetdb_log", "aspnetdb_log"); 
    } 

    EventLog log = new EventLog(); 
    log.Source = "aspnetdb_log"; 
    log.WriteEntry(message, EventLogEntryType.Error); 

    // original code doesn't work 
    // Log.LogException(message, e, LogCategory.Membership, TraceEventType.Error); 
} 
+0

你为什么要跟踪到这个相当不错的教程DB只? – abatishchev

回答

0

我建议找到或编写自己的定制TraceListener写信给你想要的数据库。

然后在你的类中使用TraceSource,并在Web.config中进行配置。

类:

​​

用法:

private static TraceSource _traceSource = new TraceSource("MySource"); 

_traceSource.Trace(...); 

配置:

<system.diagnostics> 
    <sources> 
     <source name="MySource" /> 
    </sources> 
    <sharedListeners> 
     <add name="sql" type="SqlTraceListener" /> 
    </sharedListeners> 
    <trace autoflush="true"> 
    </trace> 
</system.diagnostics> 
+0

我的代码是否可以工作 – ONYX

+0

@KDM:EventLog类永远不会将数据写入数据库。 TraceSource + TraceListener将会。 – abatishchev

+0

他们可以写顶级aspnetdb_log文件还是只写文本文件 – ONYX

0

您需要有管理权限创建使用为CreateEventSource一个EventSource的。

如果aspnetdb_log源已经存在,我相信你的代码应该运行良好。

+0

正如你所理解的,db_log是一个数据库,事件日志就是这样。其余的你是正确的 – abatishchev

0

我建议看看Log4Net它有许多不同的appender允许你登录到不同的位置,即数据库,eventlog以及文本文件。

Here是在使用了不同的附加目的地