log4net 在客户端电脑上不起作用
log4net does not work in client pc
我的 log4net 有问题,它在客户端电脑上不起作用,但在我的开发电脑上它可以创建并写入日志文件。
我的 VSTO 加载项使用的是 log4net(使用 NuGet 安装的 log4net 包)。所以在我的加载项功能区代码中,我添加了以下代码:
Ribbon.vb
<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>
<Runtime.InteropServices.ComVisible(True)> _
Public Class WordRibbon
Implements Office.IRibbonExtensibility
Private ribbon As Office.IRibbonUI
Private Shared ReadOnly log As log4net.ILog = log4net.LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
......
app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
</configSections>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%envFolderPath{MyDocuments}\MyApp\AddInLog\WordAddin-log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
当我在我的开发 PC 中 运行 MS Word(从 Visual Studio 2013 调试或直接 运行 MS Word 调试时),log4net 将能够在 MyDocuments 文件夹中创建日志文件.
但是当我 运行 在干净的虚拟机中添加插件时,没有创建日志文件。没有错误提示。我在这里遗漏了什么吗?
我发现了 vsto 4.0 sp1 will cause a VSTO Addin to not find its config file link 中的问题。
不同之处在于我的情况,加载项可以正确加载并且可以正常工作。只是 log4net 不知何故不起作用。
之前:
在加载项注册表中,Manifest 值类似于
Manifest="C:\Program Files\MyApp\WordAddIn.vsto|vstolocal"
之后:
在博客中,作者建议进行以下更改。
Manifest="file:///C:/Program Files/MyApp/WordAddIn.vsto|vstolocal"
而且我认为这就是 log4net 可以在我的开发电脑上运行的原因,因为 Visual Studio 对 Manifest 值使用相同的 URI 格式。
但是对于我的情况,我在下面尝试过,它也可以。
Manifest="C:\Program Files\MyApp/WordAddIn.vsto|vstolocal"
我使用此 URI 是因为在我的应用程序中,在安装过程中,插件注册表值路径将根据用户选择创建。如果我想将它更改为 file:///,这将涉及几个不同的文件(不仅仅是加载项),所以现在这是我的解决方案。
我不确定使用这种格式是否会导致任何问题。
我的 log4net 有问题,它在客户端电脑上不起作用,但在我的开发电脑上它可以创建并写入日志文件。
我的 VSTO 加载项使用的是 log4net(使用 NuGet 安装的 log4net 包)。所以在我的加载项功能区代码中,我添加了以下代码:
Ribbon.vb
<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>
<Runtime.InteropServices.ComVisible(True)> _
Public Class WordRibbon
Implements Office.IRibbonExtensibility
Private ribbon As Office.IRibbonUI
Private Shared ReadOnly log As log4net.ILog = log4net.LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
......
app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
</configSections>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%envFolderPath{MyDocuments}\MyApp\AddInLog\WordAddin-log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
当我在我的开发 PC 中 运行 MS Word(从 Visual Studio 2013 调试或直接 运行 MS Word 调试时),log4net 将能够在 MyDocuments 文件夹中创建日志文件.
但是当我 运行 在干净的虚拟机中添加插件时,没有创建日志文件。没有错误提示。我在这里遗漏了什么吗?
我发现了 vsto 4.0 sp1 will cause a VSTO Addin to not find its config file link 中的问题。
不同之处在于我的情况,加载项可以正确加载并且可以正常工作。只是 log4net 不知何故不起作用。
之前:
在加载项注册表中,Manifest 值类似于
Manifest="C:\Program Files\MyApp\WordAddIn.vsto|vstolocal"
之后:
在博客中,作者建议进行以下更改。
Manifest="file:///C:/Program Files/MyApp/WordAddIn.vsto|vstolocal"
而且我认为这就是 log4net 可以在我的开发电脑上运行的原因,因为 Visual Studio 对 Manifest 值使用相同的 URI 格式。
但是对于我的情况,我在下面尝试过,它也可以。
Manifest="C:\Program Files\MyApp/WordAddIn.vsto|vstolocal"
我使用此 URI 是因为在我的应用程序中,在安装过程中,插件注册表值路径将根据用户选择创建。如果我想将它更改为 file:///,这将涉及几个不同的文件(不仅仅是加载项),所以现在这是我的解决方案。 我不确定使用这种格式是否会导致任何问题。