如何配置NLog保存为UTF8+BOM文件?

问题描述 投票:0回答:1

这就是我的日志记录的配置方式:

private static void SetupLogging(string logFile)
{
    var Config = new NLog.Config.LoggingConfiguration();
    var logfile = new NLog.Targets.FileTarget("logfile")
    {
        FileName = logFile,
        Layout = "${longdate}|${level:uppercase=true}|${logger}|${message:withException=true:exceptionSeparator=|}"
    };
    var logconsole = new NLog.Targets.ConsoleTarget("logconsole");

    Config.AddRule(LogLevel.Info, LogLevel.Fatal, logconsole);
    Config.AddRule(LogLevel.Debug, LogLevel.Fatal, logfile);

    LogManager.Configuration = Config;
}

但是,创建的任何错误日志文件都是 UTF8 编码的,而不是 UTF8 + BOM。我意识到不需要 BOM ,但我使用的其他一些类依赖于存在的 BOM (

CTextFileDocument
) 库。

visual-c++ utf-8 nlog byte-order-mark
1个回答
0
投票

为此目的,

FileTarget
有一个
WriteBom
属性:

private static void SetupLogging(string logFile)
{
    var Config = new NLog.Config.LoggingConfiguration();
    var logfile = new NLog.Targets.FileTarget("logfile")
    {
        FileName = logFile,
        WriteBom = true,
        Layout = "${longdate}|${level:uppercase=true}|${logger}|${message:withException=true:exceptionSeparator=|}"
    };
    var logconsole = new NLog.Targets.ConsoleTarget("logconsole");

    Config.AddRule(LogLevel.Info, LogLevel.Fatal, logconsole);
    Config.AddRule(LogLevel.Debug, LogLevel.Fatal, logfile);

    LogManager.Configuration = Config;
}
© www.soinside.com 2019 - 2024. All rights reserved.