0

有谁知道在下面的 aspnetdb_log 文件中写入事件日志是我在网上找到的带有原始代码行的代码片段,但是 Log.LogException(..) 不起作用或者我不知道该库使用所以我使用了EventLog。我想要做的是将错误或事件记录到 aspnetdb_log 文件中,我的代码是否可以正常工作我还没有测试过,因为我处于起步阶段,如果有人可以进行任何更正,请回复谢谢。这是针对自定义会员提供者

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);  
}
4

3 回答 3

0

我建议查找或编写您自己的自定义TraceListener以写入您想要的数据库。

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

班级:

public class SqlTraceListener : TraceListener
{
    ...
}

用法:

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>
于 2012-05-15T07:08:35.663 回答
0

您需要具有管理权限才能使用 CreateEventSource 创建 EventSource。

如果 aspnetdb_log 源已经存在,我相信您的代码应该可以正常运行。

于 2012-05-15T07:19:56.090 回答
0

我建议看看Log4Net,它有许多不同的附加程序,允许您登录到不同的位置,即数据库、事件日志以及文本文件。

是一个关于使用不同附加程序的很好的教程

于 2012-05-15T07:53:19.073 回答