写在前面

还是NLog问题,虽然NLog上手简单,配置容易,但是在NetCore3下还是有一些坑的,虽然这不是NLog的问题。因为这个问题百度一圈都无果,所以在这里记录一下,希望可以帮助到百度的同学(虽然这个站点没有提交到百度收录?逃~

问题由来

好,那么现在回到主题。前一阵子在用WPF来做一个FirstFollow集算法模拟的工具,项目中使用NLog记录日志,在NetCore 3.1下作为单文件发布。发布后File类型的日志target没有将日志如期写入到文件中。并且仅在单文件发布并且fileName使用相对路径或者${basedir}指定基础目录时,才会出现这个问题,其实这个问题的解决方法很简单,只需稍微改一下就可以解决。

解决

使用${basedir:fixtempdir=true}指定基础目录。

这个问题主要原因其实是NetCore3单文件发布时AppDomain.BaseDirectory无法正确引用基础路径的问题,并且微软并没有打算在NetCore3修复这个问题,或许NetCore5会修复这个问题吧,文末会放几个链接,感兴趣可以去看看。

写在最后

又水了一篇文章,最近文章质量有点差,上个月还鸽掉了一篇Aop详解的文章(其实一直都在draft中),感觉有点罪恶感 :D


参考: