代码之家  ›  专栏  ›  技术社区  ›  Snake Eyes

如果在C中通过进程调用,则不会为控制台应用程序创建日志文件#

  •  1
  • Snake Eyes  · 技术社区  · 7 年前

    我有两个应用程序:一个WPF和一个控制台应用程序。

    在这两个应用程序上,我都安装了log4net库(同一版本),但有单独的 logging.config 每个应用程序的文件,它们的初始化方式如下:

    对于WPF(App.xaml.cs):

    protected override void OnStartup(StartupEventArgs e)
    {
       var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
       log4net.Config.XmlConfigurator.Configure(repo, new FileInfo("logging.config"));
    
       base.OnStartup(e);
    }
    

    日志记录.config 将日志文件存储为 wpf_debug.log .

    static void Main(string[] args)
    {
        var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
        log4net.Config.XmlConfigurator.Configure(repo, new FileInfo("logging.config"));
    }
    

    日志记录.config 将日志文件存储为 console_debug.log

    那么,如果我从WPF应用程序运行一个进程

    var startInfo = new ProcessStartInfo();
    startInfo.FileName = "PathToConsoleExe";
    ...
    using (Process pr = new Process())
    {
       pr.StartInfo = startInfo;
    
       pr.Start();
       pr.WaitForExit();
    }
    

    .log 控制台应用程序的文件。我不知道为什么。仅对于WPF,日志创建得很好。

    如果我通过命令提示符运行控制台应用程序,它可以正常工作。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Kevin Gosse    7 年前

    我猜是它试图加载 logging.config 文件来自错误的文件夹。尝试设置 startInfo.WorkingDirectory