我基本上有与]相同的问题>
log4net only works when XmlConfigurator.Configure() is called
但是,由于没有任何声誉(刚刚注册),我无法在此处发表评论。
感谢您提供任何有用的评论。如果我在这里做错了,请告知。非常感谢你。伯恩德
更新:感谢您的建设性提示。我已经取得了一些进展,因此将更详细地说明:我在(VS生成的C#Web服务)中使用log4net。我确实在调试文件中获得了调试信息,但是在VS(2012)中,我确实获得了每个日志记录调用的消息:
log4net:ERROR An exception ocurred while retreiving stack frame information. System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei log4net.Core.StackFrameItem..ctor(StackFrame frame)
我通过XML配置它:
<?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>
我的网络服务如下:
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"); } }
希望这已经足够。 LoggingUtil-类基本上如下所示:
private const String Log4NetConfigurationFilePath = "log4net-config.xml"; //real path looks somewhat different public static void InitializeLogging() { XmlConfigurator.Configure(new FileInfo(Log4NetConfigurationFilePath)); }
我想知道问题是否在于无法在Cassine中找到堆栈跟踪,因为Microsoft不允许这样做以保护Web服务的实现?
我基本上有与log4net相同的问题,仅在调用XmlConfigurator.Configure()时有效。但是,由于我没有任何声誉(刚刚注册),我无法在此发表评论。谢谢...
如LOG4NET-393中所述,当调用链中存在动态方法时,会发生此错误。