首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NLog不创建日志文件,通过代码进行配置

NLog不创建日志文件,通过代码进行配置
EN

Stack Overflow用户
提问于 2020-07-22 20:56:53
回答 1查看 833关注 0票数 0

使用NLog v4.6.8。

正在通过以下代码对其进行配置:

代码语言:javascript
运行
AI代码解释
复制
public class Logger
{
    public static void ConfigureLogger()
    {
        var config = new NLog.Config.LoggingConfiguration();

        // target where to log to
        string logFileName = @"\log.txt";
        string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        var logfile = new NLog.Targets.FileTarget("logfile") { FileName = path + logFileName, KeepFileOpen = true, OpenFileCacheTimeout = 5 };

        // delete the log file, if it exists.
        string fullFilePath = path + logFileName;
        if (File.Exists(fullFilePath))
        {
            File.Delete(fullFilePath);
        }

        // rules for mapping loggers to targets
        // minimum and maximum log levels for logging targets
        config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Fatal, logfile);

        // apply config
        NLog.LogManager.Configuration = config;
    }

    // create an instance of the logger for each class
    public static NLog.Logger getLogger()
    {
        return NLog.LogManager.GetCurrentClassLogger();
    }

    // Flush and close down internal threads and timers.
    public static void flushLogger()
    {
        NLog.LogManager.Shutdown();
    }
}

典型用法如下:

代码语言:javascript
运行
AI代码解释
复制
Logger.Info("Doing something");

程序集的目录中没有日志文件。为什么会这样?

发现的一些故障排除建议表明,造成这种情况的一个常见原因是NLog的配置文件没有被复制到输出目录中。但是,项目或解决方案中没有配置文件。只有对所需DLL的引用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-22 23:00:06

乍一看,您的代码看起来是有效的。当然,一定要先调用Logger.ConfigureLogger

我认为这是写权限错误。您可以尝试将其写入临时文件夹。此外,还可以启用内部日志(从代码中)。

代码语言:javascript
运行
AI代码解释
复制
// In case of a console application:
NLog.Common.InternalLogger.LogToConsole = true;

// otherwise to file: recommended to use the temp dir
NLog.Common.InternalLogger.LogFile = "c:\\temp\\log-internal.txt";

// Also needed. Try info level or otherwise debug and trace to get more details
NLog.Common.InternalLogger.LogLevel = LogLevel.Info;

要明确的是,不需要XML配置--这是可选的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63047143

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文