我的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)>
但它没有生效。
答案 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)