一个解决方案,不同项目的NLog只输出到一个文件嘛?

lig764 2019-01-03 10:53:33
想请教一下:我一个解决方案中有多个项目,每个项目中配了各自的NLog.config文件,每个项目的log输出到不同的文件;发现两个问题:
1.debug的时候,输出的是我启动项目配置的log文件名,但其他项目的log也输出到这里,跟我想的,输出到不同的文件不匹配;
2.程序发布后运行时,发现保存的log是另外一个项目配置的log输出,跟debug时输出的log文件名不同;同样,所有的log也只是输出到这个文件中;
下面是我的配置文件内容;能否帮忙解答一下上面的问题?谢谢

<?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">

<variable name="logDirectory" value="${basedir}/../Logs/ConfigUpdate/ConfigUpdate.log"/>

<targets>
<target
name="logfile"
xsi:type="File"
fileName="${var:logDirectory}"
maxArchiveFiles="5"
archiveAboveSize="10240"
archiveFileName="${basedir}/../Logs/archives_ConfigUpdate/ConfigUpdate.{#####}.log"
archiveNumbering="Sequence"
concurrentWrites="true"
keepFileOpen="false"
layout="${longdate} ${level} ${message} ${callsite:className=false:fileName=True:includeSourcePath=false:methodName=false}${newline}"/>
</targets>

<rules>
<logger name="*" minlevel="Trace" writeTo="logfile" />
</rules>
</nlog>
...全文
714 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lig764 2019-01-07
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
多个项目的可执行文件最终都汇集到了主项目的可执行文件同一目录下,自然 NLog.config 用的也就是主项目的了 我想,你应该用代码配置 NLog,而不是依赖 NLog.config
多谢多谢; 原因是:1.我多个项目配置了多个config文件,但多个项目输出到同一个目录,后编译的会把前编译的覆盖掉,最后只有一个config文件; 2.同原因1,跟时间编译前后有关系;
xuzuning 2019-01-03
  • 打赏
  • 举报
回复
多个项目的可执行文件最终都汇集到了主项目的可执行文件同一目录下,自然 NLog.config 用的也就是主项目的了
我想,你应该用代码配置 NLog,而不是依赖 NLog.config
lig764 2019-01-03
  • 打赏
  • 举报
回复
引用 4 楼 娃都会打酱油了 的回复:
看你生产里的Nlog配置具体是什么…… 一般来说发布后本地的NLog是会删除的,不覆盖服务器上的NLog配置
每个项目所有的配置除了输出文件名字不一样外,其他配置全部一样;所有信息就是刚才贴的代码; 另外,本地?服务器?这个我没太理解,能否帮忙解释一下?
  • 打赏
  • 举报
回复
看你生产里的Nlog配置具体是什么…… 一般来说发布后本地的NLog是会删除的,不覆盖服务器上的NLog配置
lig764 2019-01-03
  • 打赏
  • 举报
回复
引用 1 楼 娃都会打酱油了 的回复:
你写的路径都是一样的,所以当然写到一个里面了,你好歹按项目改下值 Logs/ConfigUpdate/ConfigUpdate.log 不同的项目改下不同的内容 比如 Logs/ConfigUpdate/ConfigUpdate1.log Logs/ConfigUpdate/ConfigUpdate2.log
我每个项目的NLog.config文件中配置的输出文件名字是不一样的;
lig764 2019-01-03
  • 打赏
  • 举报
回复
不好意思啊,我表达有点儿不清楚: 这个是我启动项目的NLog.config文件,我调试的时候,会把所有项目的log全部输出到main.log,我程序发布后,运行,所有的log,回输出到上面的那个configupdata.log文件中,这个就是我疑惑的地方; <variable name="logDirectory" value="${basedir}/../Logs/Main/Main.log"/> <targets> <target name="logfile" xsi:type="File" fileName="${var:logDirectory}" maxArchiveFiles="5" archiveAboveSize="10240" archiveFileName="${basedir}/../Logs/archives_Main/Main.{#####}.log" archiveNumbering="Sequence" concurrentWrites="true" keepFileOpen="false" layout="${longdate} ${level} ${message} ${callsite:className=false:fileName=True:includeSourcePath=false:methodName=false}${newline}"/> </targets>
  • 打赏
  • 举报
回复
你写的路径都是一样的,所以当然写到一个里面了,你好歹按项目改下值 Logs/ConfigUpdate/ConfigUpdate.log 不同的项目改下不同的内容 比如 Logs/ConfigUpdate/ConfigUpdate1.log Logs/ConfigUpdate/ConfigUpdate2.log

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧