.net 将同一代码中的信息记录到不同的目标
我有一些记录信息的类,它在两个不同的位置使用.net 将同一代码中的信息记录到不同的目标,.net,logging,log4net,.net,Logging,Log4net,我有一些记录信息的类,它在两个不同的位置使用 class SomeClass: ISomeClass { private ILogger _logger = Log.GetLogger(); public void Action() { _logger.Log("Action started"); //.... } } class OneUsage { ILogger _logger = Logger.GetLogger();
class SomeClass: ISomeClass {
private ILogger _logger = Log.GetLogger();
public void Action() {
_logger.Log("Action started");
//....
}
}
class OneUsage {
ILogger _logger = Logger.GetLogger();
public OneUsage(ISomeClass someClass) {
this.someClass = someClass;
}
public OtherAction() {
_logger.Log("Other action started");
someClass.Action();
}
}
class SecondUsage {
ILogger _logger = Logger.GetLogger();
public SecondUsage(ISomeClass someClass) {
this.someClass = someClass;
}
public OtherAction() {
_logger.Log("Second Other action started");
someClass.Action();
}
}
我需要将日志从一个用途写到一个地方,从第二个用途写到另一个地方。
我打电话的时候
oneUsage.OtherAction(); // I want logs to be written to DB
secondUsage.OtherAction // I want logging to some file
当我打电话的时候
oneUsage.OtherAction(); // I want logs to be written to DB
secondUsage.OtherAction // I want logging to some file
所有这些调用可能同时发生在同一个正在运行的应用程序上
我可以通过某种方式配置Log4net来实现这一点吗?
或者是否有其他方法来处理此问题?log4net的方法是,配置多个记录器并按名称解决它们。每个记录器包含一个或多个appender(ConsoleAppender、RollingFileAppender等)。通过解析组件中的正确记录器,可以定义输出通道 配置(请参阅)
如果这有帮助,请告诉我。log4net的方法是,配置多个记录器并按名称解析它们。每个记录器包含一个或多个appender(ConsoleAppender、RollingFileAppender等)。通过解析组件中的正确记录器,可以定义输出通道 配置(请参阅)
如果这有帮助,请告诉我。不要在SomeClass中创建记录器,而是将记录器作为参数从调用类传递给SomeClass
如果您的someclass实例始终相同,则将记录器传递给每个方法;如果您有不同的实例,则将记录器传递给构造函数。不要在someclass中创建记录器,而是将调用类中的记录器作为参数传递给someclass
如果您的someclass实例总是相同的,则将记录器传递给每个方法,如果您有不同的实例,则将记录器传递给构造函数。Hm,但我需要能够从外部类解析appender,比如从OneUsage的调用站点解析appender//设置正确的日志记录器oneUsage.OtherAction();//所有的日志都会被放在上面的设置行中,你能不能用更多的细节和可能的代码示例来解释这个问题?嗯,但我需要从外部类解析appender的能力,比如从OneUsage的调用站点解析//设置正确的日志记录器oneUsage.OtherAction();//所有的日志都会转到上面的设置行,您能用更多的细节和可能的代码示例来解释这一点吗?但我不想用日志细节污染我的API。我想问的是,对于这类问题,可能有一些常见的解决方案。在appender配置中,您可以使用过滤器,但您希望过滤什么?你需要知道呼叫类,我认为这是不可能的。。。如果在这个“特殊”类中,您必须使用“父”日志记录配置,请将“父”日志记录程序传递到该类中,而不是在该类中拥有一个日志记录程序。但我不想用日志记录细节污染我的API。我想问的是,对于这类问题,可能有一些常见的解决方案。在appender配置中,您可以使用过滤器,但您希望过滤什么?你需要知道呼叫类,我认为这是不可能的。。。如果在这个“特殊”类中,您必须使用“父”日志记录配置,那么将“父”日志记录程序传递到类中,而不是在类本身中使用日志记录程序。