Log4net Filter logs by which can show or not to customer

Log4net Filter logs by which can show or not to the customer

我想在 log4net 中保存和过滤需要向客户展示以及不应该展示的日志。我试图根据严重程度来实现这一目标 我试过这样的东西

    Logger logger = new Logger(); // My logger class
    logger.Write(Level.Info, "Main Method", "log Message", loggingParameters);
    logger.Write(Level.Finest, "Main Method", "different log Message for customer", loggingParameters);

现在我将过滤这些以仅向客户显示级别为 Finest 的日志。有没有其他方法可以达到同样的效果?

您可以通过定义不同的记录器来做到这一点:

ILog logger = LogManager.GetLogger(typeof(MyClass));//normal logger
ILog customerlogger= LogManager.GetLogger("customerlogger");//customer logger

现在您可以像这样登录到不同的记录器:

logger.Info("my log message");
customerlogger.Info("customer log message");

现在您可以在配置中区分记录器:

<root>
   ...
</root>
<logger name="customerlogger">
    <level value="DEBUG" />
    <appender-ref ref="CustomerAppender" />
</logger>

接下来,您可以使用过滤器从 'normal' 附加程序中删除 customerlogger 消息。