使用log4net在.NET上发布C#应用程序?

时间:2011-08-29 16:49:55

标签: winforms visual-studio-2008 log4net publish

我编写了第一个C#.NET WinForms应用程序,并准备发布第一个用于安装的用户。我正在使用log4net作为我的日志记录实用程序,并将其设置为:

<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="Logs\"/>
    <param name="AppendToFile" value="true"/>
    <param name="DatePattern" value="yyyy-MM-dd' Log.txt'" />
     // etc

然而,当我构建我的应用程序时,没有任何记录。在visual studio中运行时,所有内容都会转到/bin/Debug/Logs/yyyy-MM-dd Log.txt

如何指定程序的安装位置以及工作目录应该是什么?

请记住,这个程序相当简单(<6K行代码),我真的不知道visual studio中所有发布类型的区别。我只想将.exe分发给我的用户并跟踪C:\Program Files\myapp等目录下的错误。我做错了什么?

编辑:当我右键单击该程序并从解决方案资源管理器中转到属性时,我正在设置以下选项(可能不正确,我以前从未这样做过):

  1. 构建 - &gt;所有配置 - &gt;输出路径:C:\Program Files\myapp\bin\
  2. 调试 - &gt;所有配置 - &gt;工作目录:C:\Program Files\myapp\bin\
  3. 发布 - &gt;发布位置:C:\Program Files\myapp\Publish\
  4. 发布向导 - &gt;发布位置:C:\Program Files\myapp\Publish\
  5. 发布向导 - &gt;从CD-ROM或DVD-ROM
  6. 发布向导 - &gt;该应用程序不会检查更新
  7. 这些设置是正确的还是我真的搞砸了?我想要的是提示用户安装位置(默认为:C:\ Program Files \ myapp),这个位置总是用于工作目录(所以我知道日志文件在哪里)。我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

在Visual Studio中运行时,日志文件会写在Debug文件夹下,就像exe所在的那样。

当您将应用程序安装到C:\Program Files\myapp时(或任何地方),将相对于该位置创建日志,因此应该在C:\Program Files\myapp\Logs/yyyy-MM-dd Log.txt中 - 假设用户有权创建目录和文件在那个地方。

证明这一点的最简单方法是安装应用程序并运行它。然后检查日志文件的创建位置。

答案 1 :(得分:1)

由于您使用Click Once进行部署,因此该应用程序将不在典型的C:\Program Files\myapp目录中。

Vista和Windows 7:

C:\Users\<UserName>\AppData\Local\Apps\2.0\<obscure foler>\<obscure folder>

Windows XP:

C:\Documents and Settings\<UserName>\LocalSettings\Apps\2.0\<obscure foler>\<obscure folder>

在这些目录中挖掘,你应该看到log4net文件。

修改
Click Once部署的替代方法是Visual Studio安装程序:Walkthrough: Deploying a Windows-based Application。这将允许您在标准C:\Program Files\myapp目录中安装应用程序。

我建议您使用安装程序创建一些虚拟项目,以便熟悉各种选项。最初,如果你之前没有使用它,使用安装程序创建MSI似乎令人生畏;经过一段时间的使用后,VS安装程序将变得非常容易使用。

另一个建议是在虚拟机上测试您的安装程序,这样您就不会在个人环境中无意中做任何事情。