AssemblyInfo.vb将Log4NetAssembly1.exe.log4net路径更改为用户的本地文件夹

时间:2015-02-05 03:17:12

标签: vb.net log4net local .net-assembly

我的vb.net项目用于不同的用户,我迷失了如何在AssemblyInfo.vb中将Log4NetAssembly1.exe.log4net文件路径设置为用户的本地文件夹。 Log4NetAssembly1.exe.log4net文件位于每个用户的C:\ Users \ UserName \ AppData \ Local \ Temp \ DeskApp \ DeskApp \ Log4NetAssembly1.exe.log4net中。

我尝试使用以下方法但不起作用:

<Assembly: AssemblyTitle("DeskApp")> 
<Assembly: AssemblyDescription("")> 
<Assembly: AssemblyCompany("ESRI")> 
<Assembly: AssemblyProduct("DeskApp")> 
<Assembly: AssemblyCopyright("Copyright © ESRI 2009")> 
<Assembly: AssemblyTrademark("")> 
<Assembly: log4net.Config.XMLConfigurator(ConfigFile:="${LOCALAPPDATA}\Temp\DeskApp\DeskApp\Log4NetAssembly1.exe.log4net", Watch:=True)>

我正在使用vs 2012,提前谢谢。

修改

我尝试将log4net文件放在与AssemblyInfo.vb相同的文件夹中,并使用:

<Assembly: log4net.Config.XMLConfigurator(ConfigFileExtension:="log4net", Watch:=True)> 

但它没有生效。

1 个答案:

答案 0 :(得分:1)

如果配置文件与.exe位于同一文件夹中,那么您don't need to specify an absolute path

  

ConfigFile实现

     

如果指定,则为配置的文件名   用于XmlConfigurator的文件。此文件路径是相对的   应用程序基目录   (AppDomain.CurrentDomain.BaseDirectory)。

如果配置文件位于不相关的目录中,则必须删除程序集属性并在运行时配置log4net,否则将不会评估环境变量:

Dim filePath as String = Path.Combine(System.Environment.GetFolderPath
                                    (Environment.SpecialFolder.LocalApplicationData), 
                        "Temp\DeskApp\DeskApp\Log4NetAssembly1.exe.log4net")

Dim fileInfo As New FileInfo(filePath)

If fileInfo.Exists = False Then
    Throw New InvalidOperationException("Can't locate the log4net config file")
End If

log4net.Config.XmlConfigurator.ConfigureAndWatch(fileInfo)