写在前面
还是NLog
问题,虽然NLog
上手简单,配置容易,但是在NetCore3
下还是有一些坑的,虽然这不是NLog
的问题。因为这个问题百度一圈都无果,所以在这里记录一下,希望可以帮助到百度的同学(虽然这个站点没有提交到百度收录?逃~
问题由来
好,那么现在回到主题。前一阵子在用WPF
来做一个First
、Follow
集算法模拟的工具,项目中使用NLog
记录日志,在NetCore 3.1
下作为单文件发布。发布后File
类型的日志target
没有将日志如期写入到文件中。并且仅在单文件发布并且fileName
使用相对路径或者${basedir}
指定基础目录时,才会出现这个问题,其实这个问题的解决方法很简单,只需稍微改一下就可以解决。
解决
使用${basedir:fixtempdir=true}
指定基础目录。
这个问题主要原因其实是NetCore3
单文件发布时AppDomain.BaseDirectory
无法正确引用基础路径的问题,并且微软并没有打算在NetCore3
修复这个问题,或许NetCore5
会修复这个问题吧,文末会放几个链接,感兴趣可以去看看。
写在最后
又水了一篇文章,最近文章质量有点差,上个月还鸽掉了一篇Aop详解的文章(其实一直都在draft
中),感觉有点罪恶感 :D
参考:
- PublishSingleFile excluding appsettings not working as expected
- Single file publish: AppContext.BaseDirectory doesn’t point to apphost directory
- When .net core app published as single file - ${basedir} is wrong
- Why cannot write log to files when WPF application publishing as a single file
- Basedir layout renderer