3

我有一个从多个服务提供商获取数据(通常是 exe 文件和文本文件)的系统,我的系统获取这些数据并对其进行一些工作(基本上分析其行为)。

Log4Net用来生成日志文件,我想为每个服务提供商提供单独的日志文件。

直到现在(因为我只有一个服务提供商)我曾经Postsharp记录/跟踪我的系统。基本上我创建了包含以下代码的属性:

Public class LogAttribute : OnMethodBoundaryAspect 
{
     private static ILog = LogManager.GetLogger();

     public override void OnEntry(MethodExecutionEventArgs eventArgs)
     {
           //Log some stuff...
     }

     //some other code
}

我添加了这个,或者这种属性(我对不同的日志记录策略有不同的属性),并将这个属性附加到我想要记录的不同方法/程序集。

问题

我可以Postsharp根据使用正在记录的方法的服务来解码相关的日志文件吗?(一些方法和类被不止一个服务提供商使用)。

如果它有助于我使用 Autofac 注入我的依赖项,那么也许我可以在运行时解决日志?

4

1 回答 1

1

您可以根据当前类或命名空间明确选择不同的日志文件。我无法帮助您使用 Autofac 或 log4net,但是,关于 PostSharp,我建议:

  1. 使日志字段成为 [NonSerialized] 实例字段(而不是静态字段)。
  2. 重写 RuntimeInitialize 方法并根据需要初始化日志字段(您将收到目标方法的 MethodInfo 作为参数)
于 2012-06-20T12:59:29.670 回答