You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NLog配置文件存在但日志无输出的问题排查求助

NLog配置文件存在但日志无输出的问题排查求助

大家好,我最近碰到一个NLog日志不生成的问题,试了好几种方法都没解决,想请各位帮忙分析下。

我目前用NLog库做应用的日志记录,已经在主窗体类里声明了Logger实例:

public partial class FenetrePrincipale : Form
{
    #region NLog
    private static readonly Logger logger = LogManager.GetLogger("FenetrePrincipale");
    #endregion
...

然后在业务代码里调用了日志输出:

private bool StartService()
{
    try
    {
        logger.Debug("Try to start service");

我的NLog.config配置文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">

  <targets>
    <target name="file"
            xsi:type="File"
            fileName="${basedir}/${date:format=yyyyMMdd}.log"
            layout="${longdate} | ${level:uppercase=true} | ${message}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="file" />
  </rules>

</nlog>

但现在的问题是,无论怎么运行程序,都没有生成指定的日志文件。我已经确认程序运行的目录是正确的——通过Visual Studio查看进程PID,再到任务管理器里找到对应进程并打开文件位置验证过。而且之前在同一个目录下程序是能正常生成日志的,所以应该不是文件权限的问题。

我有两个疑问:

  1. 有没有办法把logger.Debug(text);改成类似带输出参数的形式(比如logger.Debug(text, out explanation)),让NLog返回日志生成失败的原因?我反编译了NLog的代码,没找到这类重载方法,应该是没有这种方式?
  2. 还有什么其他有效的排查手段能找出问题所在吗?

编辑1:
按照一位朋友的建议,我修改了NLog.config的根节点,加上了内部日志的配置,想通过内部日志排查问题:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      internalLogFile="c:\Temp_Folder\log.txt" internalLogLevel="Trace">

但修改后还是没有任何效果,我用命令行查看指定路径的日志文件,显示文件不存在:

Command prompt>dir c:\Temp_Folder\log.txt
...
 Directory of c:\Temp_Folder

File Not Found

我检查了NLog.dll的属性,版本是比较新的,应该满足内部日志的版本要求(NLog 4.3及以上支持内部日志),而且我的解决方案里已经正确引用了NLog相关组件。

另外,我在Windows系统日志(Windows Logs -> System)里看到一条COM服务器权限错误的记录,不知道会不会和这个日志问题有关?

The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
{2593F8B9-4EAF-457C-B68A-50F6B8EA6B54}
and APPID
{15C20B67-12E7-4BB6-92BB-7AFF07997402}
to the user DOMAIN\DDM SID (S-1-5-21-1049629045-689772303-932725714-51094) from address LocalHost (Using LRPC) running in the application container Unavailable SID (Unavailable). This security permission can be modified using the Component Services administrative tool.


编辑2:
虽然我一开始觉得把NLog.config添加到Visual Studio解决方案项目里没什么意义,但还是抱着试试的心态操作了,结果还是一样——既没有生成目标日志文件,也没有生成内部日志文件C:\Temp_Folder\Log.txt。

备注:内容来源于stack exchange,提问作者Dominique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:53:08