配置Microsoft.Owin.Logging.ILogger

gwi*_*003 5 c# logging log4net owin

如何配置ILogger写到其他位置?我想将日志写入C:\Logs\MyLogFile.log

我正在这样设置我的习惯LoggerFactory

app.Properties["server.LoggerFactory"] = new MyCustomLoggerFactory();
Run Code Online (Sandbox Code Playgroud)

MyCustomLoggerFactory 看起来像这样:

public class MyCustomLoggerFactory: ILoggerFactory
{
    public ILogger Create(string name)
    {
        return new CustomLogger();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,ICustomLogger接口和CustomLogger类如下所示:

public interface ICustomLogger : ILogger
{

}

public class CustomLogger : ICustomLogger 
{
    public bool WriteCore(TraceEventType eventType, int eventId, object state, 
        Exception exception, Func<object, Exception, string> formatter)
    {
        throw new NotImplementedException("Dont use this one dummy");
    }
}
Run Code Online (Sandbox Code Playgroud)

没有办法设置写入日志文件的LogLevel或Url吗?理想情况下,我也想为此使用log4net。

Pet*_*ter 3

您可以在自定义记录器中实现 log4net,您必须使用 TraceEventType 来确定日志记录级别:

public class CustomLogger : ICustomLogger 
{
    public bool WriteCore(TraceEventType eventType, int eventId, object state, 
        Exception exception, Func<object, Exception, string> formatter)
    {
        ILog logger = LogManager.GetLogger("myowinlogger");
        switch (eventType){
            case(TraceEventType.Critical): 
            {
                logger.Fatal(...);
            }
            ....

    }
}
Run Code Online (Sandbox Code Playgroud)

确保您有配置并且可以进行 log4net 配置以写入特定位置或附加程序。