如何让Castle Windsor TraceLoggerFactory输出到Visual Studio输出window?
How to make Castle Windsor TraceLoggerFactory output to Visual Studio output window?
我正在构建一个基于 asp.net 样板的应用程序,它使用 castle Windsor 日志记录工具。
我想使用 TraceLoggerFactory
而不是 log4netFactory。 (后者工作正常)
我的目标是将我的日志输出到 Visual Studio 中的输出 window。
我关掉了
f => f.UseAbpLog4Net().WithConfig("log4net.config")
和
f => f.LogUsing<TraceLoggerFactory>().WithLevel(loggerLevel)
我希望这会通过 defaulttracelistener
将所有内容输出到输出 window。但是,当此代码运行时,它不会记录任何内容。
如果我在调试期间查看 Logger 对象,我会看到所有日志记录级别都已关闭,而 loggerLevel
设置为调试。所以我认为这就是问题所在。
如果我使用 ConsoleFactory,您会得到一个启用了所有日志级别的 Logger 对象
但这不是控制台应用程序,所以我没有用到控制台日志记录。
如何正确配置 TraceLoggerFactory
,以便将所有内容定向到输出 window?
Castle 的 TraceLoggerFactory
在其构造函数中不接受 LoggerLevel
。
您必须对其进行子类化:
public class MyTraceLoggerFactory : TraceLoggerFactory
{
private readonly LoggerLevel? level;
public MyTraceLoggerFactory()
{
}
public MyTraceLoggerFactory(LoggerLevel level)
{
this.level = level;
}
public override ILogger Create(string name)
{
if (level.HasValue)
{
return Create(name, level.Value);
}
return base.Create(name);
}
}
用法:
f => f.LogUsing<MyTraceLoggerFactory>().WithLevel(loggerLevel)
我正在构建一个基于 asp.net 样板的应用程序,它使用 castle Windsor 日志记录工具。
我想使用 TraceLoggerFactory
而不是 log4netFactory。 (后者工作正常)
我的目标是将我的日志输出到 Visual Studio 中的输出 window。
我关掉了
f => f.UseAbpLog4Net().WithConfig("log4net.config")
和
f => f.LogUsing<TraceLoggerFactory>().WithLevel(loggerLevel)
我希望这会通过 defaulttracelistener
将所有内容输出到输出 window。但是,当此代码运行时,它不会记录任何内容。
如果我在调试期间查看 Logger 对象,我会看到所有日志记录级别都已关闭,而 loggerLevel
设置为调试。所以我认为这就是问题所在。
如果我使用 ConsoleFactory,您会得到一个启用了所有日志级别的 Logger 对象
但这不是控制台应用程序,所以我没有用到控制台日志记录。
如何正确配置 TraceLoggerFactory
,以便将所有内容定向到输出 window?
Castle 的 TraceLoggerFactory
在其构造函数中不接受 LoggerLevel
。
您必须对其进行子类化:
public class MyTraceLoggerFactory : TraceLoggerFactory
{
private readonly LoggerLevel? level;
public MyTraceLoggerFactory()
{
}
public MyTraceLoggerFactory(LoggerLevel level)
{
this.level = level;
}
public override ILogger Create(string name)
{
if (level.HasValue)
{
return Create(name, level.Value);
}
return base.Create(name);
}
}
用法:
f => f.LogUsing<MyTraceLoggerFactory>().WithLevel(loggerLevel)