我如何知道 log4net 认为它从哪里获取配置文件?
我从 log4net 调试日志中获得以下日志:
log4net: DefaultRepositorySelector: 存储库 [log4net-default-repository] 已存在,使用存储库类型 [log4net.Repository.Hierarchy.Hierarchy] log4net:XmlConfigurator:使用文件 [log4net.config] 配置存储库 [log4net-default-repository] 监视文件更新 log4net:XmlConfigurator:使用文件 [log4net.config] 配置存储库 [log4net-default-repository] log4net:XmlConfigurator:使用流配置存储库 [log4net-default-repository] log4net:错误 XmlConfigurator: 加载 XML 配置时出错 System.Xml.XmlException:“ ”是意外标记。预期的标记是“>”。 7号线,184号位置。 在 System.Xml.XmlTextReaderImpl.Throw(异常 e) 在 System.Xml.XmlTextReaderImpl.Throw(String res, String[] args) 在 System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(字符串预期令牌1,字符串预期令牌2) 在System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(Int32 pos,字符串expectedToken1,字符串expectedToken2) 在 System.Xml.XmlTextReaderImpl.ParseAttributes() 在 System.Xml.XmlTextReaderImpl.ParseElement() 在 System.Xml.XmlTextReaderImpl.ParseElementContent() 在 System.Xml.XmlTextReaderImpl.Read() 在 System.Xml.XmlTextReader.Read() 在 System.Xml.XmlValidatingReaderImpl.Read() 在 System.Xml.XmlValidatingReader.Read() 在System.Xml.XmlLoader.LoadNode(布尔skipOverWhitespace) 在System.Xml.XmlLoader.LoadDocSequence(XmlDocumentparentDoc) 在System.Xml.XmlLoader.Load(XmlDocument文档,XmlReader阅读器,布尔保留空白) 在 System.Xml.XmlDocument.Load(XmlReader 阅读器) 在 log4net.Config.XmlConfigurator.Configure(ILoggerRepository repository, Stream configStream)
唯一的问题是,我不知道它认为它在哪里获取这个 log4net.config 文件,因为在我的 AssemblyInfo.cs 中我已将其定义为
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "api4net.config", Watch = true)]
:有没有一种简单的方法可以确定 log4net 在哪里加载这个神秘的 log4net.config(该配置有一些 xml 错误)?
I have the following log from the log4net debug log:
log4net: DefaultRepositorySelector: repository [log4net-default-repository] already exists, using repository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using file [log4net.config] watching for file updates
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using file [log4net.config]
log4net: XmlConfigurator: configuring repository [log4net-default-repository] using stream
log4net:ERROR XmlConfigurator: Error while loading XML configuration
System.Xml.XmlException: ' ' is an unexpected token. The expected token is '>'. Line 7, position 184.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
at System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(String expectedToken1, String expectedToken2)
at System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(Int32 pos, String expectedToken1, String expectedToken2)
at System.Xml.XmlTextReaderImpl.ParseAttributes()
at System.Xml.XmlTextReaderImpl.ParseElement()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlTextReader.Read()
at System.Xml.XmlValidatingReaderImpl.Read()
at System.Xml.XmlValidatingReader.Read()
at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
at System.Xml.XmlDocument.Load(XmlReader reader)
at log4net.Config.XmlConfigurator.Configure(ILoggerRepository repository, Stream configStream)
The only problem is, I have no idea where it thinks it's getting this log4net.config file, since in my AssemblyInfo.cs I have defined it to be:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "api4net.config", Watch = true)]
Is there an easy way to determine where log4net is loading this mystical log4net.config that has some xml errors?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为应该在 app.config 或 web.config 中配置附加程序。但我是 log4net 新手。 phil haack 写道:
如果您使用单独的配置文件,让您的应用程序找到它的一种快速而简单(但肮脏)的方法是将配置文件放在 webroot 中......
I thought one should config the appenders in the app.config or in the web.config. but i am log4net newbie. phil haack wrote:
If you use a separate config file, a quick and easy (and dirty) way to have your application find it is to place the config file in the webroot ...