如何将 log4net 输出到当前工作目录?

发布于 2024-08-14 23:10:17 字数 107 浏览 4 评论 0原文

是否可以让 log4net 将其日志文件放置到当前工作目录而不是应用程序所在的目录?

换句话说,如果我运行 ..\myapp.exe,我不希望日志文件位于 ..\ 我希望它们位于 .\

Is it possible to have log4net put its log files relative to the current working directory instead of the directory where the application resides?

In other words, if I run ..\myapp.exe, I don't want the log files in ..\ I want them in .\

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不回头走下去 2024-08-21 23:10:17

我最终查看了 log4net 源代码,并确定我可以实现自己的附加程序,该附加程序扩展 FileAppender 并覆盖 File 属性。

class CWDFileAppender : FileAppender
{
    public override string File
    {
        set
        {
            base.File = Path.Combine(Directory.GetCurrentDirectory(), value);
        }
    }
}

我只是在我的配置中使用 CWDFileAppender 。

I ended up looking at the log4net source and determined I can implement my own appender that extends FileAppender and overrides the File property.

class CWDFileAppender : FileAppender
{
    public override string File
    {
        set
        {
            base.File = Path.Combine(Directory.GetCurrentDirectory(), value);
        }
    }
}

I just use CWDFileAppender in my configuration.

虚拟世界 2024-08-21 23:10:17

从配置文件中不可能,按照此处。如果您从程序内部手动配置它,则可能是可能的:

public static log4net.Appender.IAppender CreateFileAppender(string name,
string fileName)
{
  log4net.Appender.FileAppender appender = new
log4net.Appender.FileAppender();
  appender.Name = name;
  appender.File = fileName;
  appender.AppendToFile = true;

  log4net.Layout.PatternLayout layout = new
log4net.Layout.PatternLayout();
  layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n";
  layout.ActivateOptions();

  appender.Layout = layout;
  appender.ActivateOptions();

  return appender;
}

然后您可以将其与记录器关联,如下所示:

AddAppender("Log4net.MainForm", CreateFileAppender("FileAppender",   
Path.Combine(Directory.GetCurrentDirectory(), "foo.log")));

Not possible from the config file, as per here. It may be possible if you are configuring it manually from inside your program though:

public static log4net.Appender.IAppender CreateFileAppender(string name,
string fileName)
{
  log4net.Appender.FileAppender appender = new
log4net.Appender.FileAppender();
  appender.Name = name;
  appender.File = fileName;
  appender.AppendToFile = true;

  log4net.Layout.PatternLayout layout = new
log4net.Layout.PatternLayout();
  layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n";
  layout.ActivateOptions();

  appender.Layout = layout;
  appender.ActivateOptions();

  return appender;
}

You can then associate it with the logger as follows:

AddAppender("Log4net.MainForm", CreateFileAppender("FileAppender",   
Path.Combine(Directory.GetCurrentDirectory(), "foo.log")));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文