Log4net在Web服务中

Ber*_*rnd 2 asp.net service log4net web

我基本上有同样的问题

log4net仅在调用XmlConfigurator.Configure()时有效

但是,我无法评论,因为我没有任何声誉(只是注册).

感谢任何有用的评论.如果我在这里做错了,请告知.非常感谢你.贝恩德

更新:感谢您提供建设性的提示.我已经取得了一些进展,因此将更详细地解释:我在一个(VS生成的C#Web服务)中使用log4net.我确实在调试文件中获得了调试信息,但是在VS(2012)中,我确实收到了每个日志记录调用的消息:

log4net:ERROR在检索堆栈帧信息时发生异常.System.NullReferenceException:Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.bei log4net.Core.StackFrameItem..ctor(StackFrame框架)

编码:

我通过xml-File配置它:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>  
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="Logs/debug.log" />
    <encoding value="utf-8" />
    <appendToFile value="true" />
    <maximumFileSize value="10MB" />
    <maxSizeRollBackups value="2" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level (%class#%method:%line):%message%newline" />
    </layout>
  </appender>
  <root>
    <level value="DEBUG" />    
    <appender-ref ref="RollingFile" />
  </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

我的Web服务看起来像这样:

public class ObjectInfo : IObjectInfo
{    
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);



    public void DoWork()        {
      Logging.LoggingUtil.InitializeLogging();
      log.Debug("Some message");
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这是足够的.LoggingUtil-类基本上如下所示:

private const String Log4NetConfigurationFilePath = "log4net-config.xml"; //real path looks somewhat different
public static void InitializeLogging()
{    
  XmlConfigurator.Configure(new FileInfo(Log4NetConfigurationFilePath));     
}
Run Code Online (Sandbox Code Playgroud)

我想知道,如果问题是无法在Cassine中找到堆栈跟踪,因为Microsoft不允许这样做以保护其Web服务的实现?

Cod*_*ter 5

如所解释的在这里,当存在在调用链动态方法发生此错误.

他们声称在版本中修复了此错误> 1.12.2.

  • 对不起,我不能投票,因为我的声誉不够.也许其他人会有类似的问题,并获得一些信誉. (2认同)