运行WPF应用程序的可执行文件时,log4net无法正常工作

油菜

我在WPF应用程序中使用log4net。从Visual Studio运行应用程序时,log4net可以工作,但是,当我们通过中的可执行文件运行应用程序时,log4net不起作用bin

我们正在使用一个log4net.config文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net debug="true">
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="C:/ProgramData/CompApps/Logs/AppName/log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="25" />
      <maximumFileSize value="20MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%utcdate UTC %property{log4net:HostName} [%thread] %-5level %logger - %method() - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="Info" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>
</configuration>

log4net.config 特性

Build Action: Content
Copy to Output Directory: Copy always

AssemblyInfo.cs

// log4net config
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

这在我们要使用记录器的每个类中都使用:

private static readonly ILog log = LogManager.GetLogger(typeof(App));
山姆

在代码中进行配置的另一种方法:

namespace Company.Product
{
    using System.Text;
    using log4net;
    using log4net.Appender;
    using log4net.Core;
    using log4net.Layout;
    using log4net.Repository.Hierarchy;

    public static class LogHelper
    {
        static LogHelper()
        {
            var hierarchy = (Hierarchy)LogManager.GetRepository();
            hierarchy.Root.Level = Level.All;
            hierarchy.Configured = true;
        }

        public static ILog GetLoggerRollingFileAppender(string logName, string fileName)
        {
            var log = LogManager.Exists(logName);

            if (log != null) return log;

            var appenderName = $"{logName}Appender";
            log = LogManager.GetLogger(logName);
            ((Logger)log.Logger).AddAppender(GetRollingFileAppender(appenderName, fileName));

            return log;
        }

        public static RollingFileAppender GetRollingFileAppender(string appenderName, string fileName)
        {
            var layout = new PatternLayout { ConversionPattern = "%date{dd.MM.yyyy HH:mm:ss.fff}  [%-5level]  %message%newline" };
            layout.ActivateOptions();

            var appender = new RollingFileAppender
            {
                Name = appenderName,
                File = fileName,
                AppendToFile = true,
                RollingStyle = RollingFileAppender.RollingMode.Size,
                MaxSizeRollBackups = 2,
                MaximumFileSize = "500KB",
                Layout = layout,
                ImmediateFlush = true,
                LockingModel = new FileAppender.MinimalLock(),
                Encoding = Encoding.UTF8,
            };

            appender.ActivateOptions();

            return appender;
        }
    }
}

您的情况的用法:

private static readonly ILog log = LogHelper.GetLoggerRollingFileAppender(typeof(App), "C:/ProgramData/CompApps/Logs/AppName/log.txt");

或从您的应用程序配置文件中引用日志文件的完整路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行WPF应用程序的可执行文件时,log4net无法正常工作

来自分类Dev

Linux Fultter桌面-无法从已编译的可执行文件运行应用程序,无法正常运行

来自分类Dev

指定的任务可执行文件“ cmd.exe”无法运行。指定的可执行文件不是此OS平台的有效应用程序

来自分类Dev

如何运行可执行文件(应用程序/ x-可执行文件)?

来自分类Dev

当主要可执行文件使用旧的log4net版本时,在dll中使用LinqToExcel

来自分类Dev

在MVC应用程序中使用log4net附加程序azure无法使log4net正常工作

来自分类Dev

可执行文件无法正常运行[Linux]

来自分类Dev

.JAR可执行文件无法正常运行

来自分类Dev

确保当应用程序退出时,由进程从线程运行的可执行文件被终止

来自分类Dev

Wpf 应用程序作为单个可执行文件

来自分类Dev

如何从打包的Electron应用程序运行可执行文件

来自分类Dev

退出时删除应用程序可执行文件

来自分类Dev

CPU在应用程序启动时就注册状态。PE可执行文件

来自分类Dev

CPU在应用程序启动时就注册状态。PE可执行文件

来自分类Dev

发布时在clickonce应用程序内签名可执行文件

来自分类Dev

自动测试应用程序可执行文件(基于Windows的应用程序)

来自分类Dev

如何运行可执行文件(Web应用程序)24/7,并在其崩溃时自动重新启动?

来自分类Dev

如何运行可执行文件(Web应用程序)24/7,并在其崩溃时自动重新启动?

来自分类Dev

在Windows上,为什么不能覆盖正在运行的应用程序的可执行文件?

来自分类Dev

如何创建用于运行任何特定应用程序的某些终端命令的自动可执行文件

来自分类Dev

可执行文件包装程序,从PATH的末尾运行原始可执行文件

来自分类Dev

VB.Net应用程序将无法启动klist.exe可执行文件(即使从完整路径启动)

来自分类Dev

指向可执行文件的符号链接无法启动应用程序,错误:<符号链接>不存在

来自分类Dev

当捆绑可执行文件是 Bash 脚本时将参数传递给 macos 应用程序

来自分类Dev

在MVC应用程序中使用log4net附加程序Azure无法运行log4net

来自分类Dev

在哪里可以找到文件系统中的应用程序可执行文件?

来自分类Dev

在哪里可以找到文件系统中的应用程序可执行文件?

来自分类Dev

从可执行文件(及其所在的文件夹)创建应用程序

来自分类Dev

可执行文件名称和应用程序名称不同

Related 相关文章

  1. 1

    运行WPF应用程序的可执行文件时,log4net无法正常工作

  2. 2

    Linux Fultter桌面-无法从已编译的可执行文件运行应用程序,无法正常运行

  3. 3

    指定的任务可执行文件“ cmd.exe”无法运行。指定的可执行文件不是此OS平台的有效应用程序

  4. 4

    如何运行可执行文件(应用程序/ x-可执行文件)?

  5. 5

    当主要可执行文件使用旧的log4net版本时,在dll中使用LinqToExcel

  6. 6

    在MVC应用程序中使用log4net附加程序azure无法使log4net正常工作

  7. 7

    可执行文件无法正常运行[Linux]

  8. 8

    .JAR可执行文件无法正常运行

  9. 9

    确保当应用程序退出时,由进程从线程运行的可执行文件被终止

  10. 10

    Wpf 应用程序作为单个可执行文件

  11. 11

    如何从打包的Electron应用程序运行可执行文件

  12. 12

    退出时删除应用程序可执行文件

  13. 13

    CPU在应用程序启动时就注册状态。PE可执行文件

  14. 14

    CPU在应用程序启动时就注册状态。PE可执行文件

  15. 15

    发布时在clickonce应用程序内签名可执行文件

  16. 16

    自动测试应用程序可执行文件(基于Windows的应用程序)

  17. 17

    如何运行可执行文件(Web应用程序)24/7,并在其崩溃时自动重新启动?

  18. 18

    如何运行可执行文件(Web应用程序)24/7,并在其崩溃时自动重新启动?

  19. 19

    在Windows上,为什么不能覆盖正在运行的应用程序的可执行文件?

  20. 20

    如何创建用于运行任何特定应用程序的某些终端命令的自动可执行文件

  21. 21

    可执行文件包装程序,从PATH的末尾运行原始可执行文件

  22. 22

    VB.Net应用程序将无法启动klist.exe可执行文件(即使从完整路径启动)

  23. 23

    指向可执行文件的符号链接无法启动应用程序,错误:<符号链接>不存在

  24. 24

    当捆绑可执行文件是 Bash 脚本时将参数传递给 macos 应用程序

  25. 25

    在MVC应用程序中使用log4net附加程序Azure无法运行log4net

  26. 26

    在哪里可以找到文件系统中的应用程序可执行文件?

  27. 27

    在哪里可以找到文件系统中的应用程序可执行文件?

  28. 28

    从可执行文件(及其所在的文件夹)创建应用程序

  29. 29

    可执行文件名称和应用程序名称不同

热门标签

归档