【问题标题】:c# window service not picking up log4net settings after installing from custom installer从自定义安装程序安装后,c# 窗口服务未获取 log4net 设置
【发布时间】:2012-06-12 15:09:17
【问题描述】:

我有一个客户端应用程序,它是一个带有 dll、exe 和配置文件的窗口服务器。

我已经为它创建了一个自定义安装程序,它将把它复制到程序文件中并更新它的配置。

这是我正在使用的代码

//read config and update
string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)+"\\EventLogTracer.exe"; //this is app.exe path not app.exe.config path
Configuration evetconfig =ConfigurationManager.OpenExeConfiguration(path);
evetconfig.AppSettings.Settings.Remove("baseUri");
 evetconfig.AppSettings.Settings.Add("baseUri", "https://192.168.1.79:443/rest");
evetconfig.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

我的 app.exe.config 文件中也有 log4net 配置。我根本没有碰它。我的安装程序也有相同的 log4net 设置。

现在我创建了它的 MSI 文件并通过安装它来运行不同的机器。

现在在我的本地机器上安装完美,并选择所有设置和 log4net 设置。一切都很完美。

在我的 VM 机器上,我尝试安装它。它已安装并将数据发布到服务器。但它没有获取 log4net 设置,也没有写入任何日志。

这里有什么问题,我没有脑子。有人可以帮忙吗?

谢谢

【问题讨论】:

  • 您确定 log4net 引用标记为 copy local = true 并且已部署在目标机器上吗?
  • 你能确认日志文件在机器上吗?
  • 是的,日志文件是由安装程序在具有相同 log4net 设置的机器上创建的。是的,它的本地副本是正确的。有时它也会拾取并写入日志。但有些时候不是。

标签: c# windows-services installation windows-installer log4net


【解决方案1】:

我在 IIS 上部署的 WCF 应用程序遇到了类似的问题,结果证明是权限相关问题。我知道您没有使用 IIS,但您的问题听起来也与权限有关。

生产中使用的是什么操作系统?服务器2008?如果是这样,他们是否比以前的 Windows 版本锁定了 Program Files 的权限?尝试完全控制将日志写入所有用户的文件夹,看看是否有效。如果是这样,您就知道这是一个权限问题,然后您可以确定需要为哪些用户设置哪些特定权限(而不是让所有用户完全控制它)。

【讨论】:

    猜你喜欢
    • 2020-09-05
    • 2011-03-15
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多