ASP.NET Core中NLog目标文件名能否使用()等特殊字符?
ASP.NET Core中NLog目标文件名使用括号的问题解决方案
哈哈,这个坑我之前踩过!你遇到的问题根源在于:NLog的配置语法里,括号()是有特殊用途的——它用来定义布局渲染器的参数,或者写条件判断逻辑,所以当你直接在路径里写UAT (Testing)时,NLog会误把括号当成语法标记去解析,导致路径拼接错乱,生成异常的文件名。
给你两个靠谱的解决办法,选哪个都行:
方法一:转义括号
在每个括号前加反斜杠\,把特殊字符转义成普通文本,配置路径改成:C:_Logs\UAT \(Testing)\DebugService_${shortdate}.log这样NLog就会把
\(和\)识别为普通的括号,不会乱解析了。方法二:用双引号包裹完整路径
把整个路径用双引号括起来,明确告诉NLog这是一个完整的字符串,不要解析里面的特殊语法:"C:_Logs\UAT (Testing)\DebugService_${shortdate}.log"这种方式更省心,尤其是路径里有多个特殊字符的时候,不用逐个转义。
你可以试下这两种方法,不管哪种都应该能让NLog正确生成C:_Logs\UAT (Testing)\DebugService_YYYYMMDD.log格式的日志文件,不会再出现路径错乱的问题啦。
内容的提问来源于stack exchange,提问作者oggythorpe
相关产品推荐
相关产品推荐

