Why is the date appended twice on filenames when using Log4Net?
Why is the date appended twice on filenames when using Log4Net?
I was trying to add the date to my log file name and I was able to make it work by following the few suggestions I've found in stackoverflow. Everything works fine but for some reason, the first file always has the date appended twice.
For example, instead of log.2009-02-23.log, I get log.2009-02-23.log.2009-02-23.log.
I found it so weird and fyi, this is a very simple code. It's not like I have it running in a multi-threaded environment.
My log4net config:
<log4net> <appender name="MyLog" type="log4net.Appender.RollingFileAppender"> <file value="../../Logs/Mylog"/> <staticLogFileName value="false" /> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value=".yyyy-MM-dd.lo\g" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d{DATE} [%t] %-5p %c - %m%n"/> </layout> </appender> <root> <level value="INFO"/> <appender-ref ref="MyLog"/> </root> </log4net>
Any ideas why?
Edit: I want to add the information about the environment I'm testing this in.
- asp.net
- .net framework 2.0
- windows server 2003 64-bit service pack 2
- log4net 1.2.10
回答1:
This happens if there is a problem accessing the log file when you initialize the log system. It can happen if you initialize the log system twice, if you run your program while another copy is running and writing to the log file, or if you are editing the log file in a text editor. Basically anything that causes a write lock on the log file when log4net init runs.
Check your code for duplicate calls to log4net init - perhaps you are initializing in a constructor instead of in a singleton's static constructor or global init, for example.
This can also happen if you are running in a 'web garden' configuration and don't include the PID in the filename, because each different web server process tries to write to the same file. If using web gardens and writing to files, add the pid to the filename pattern so each server process gets its own file.
回答2:
It's a permission problem. At least that's what's happening to me.
I'm new in using Log4Net so I didn't know that it has internal logging but I found it so I tried turning internal logging on. I wasn't very sure what it's saying but here's what it looks like to me it's doing: 1. Append the date to the file name. 2. Try to access the file to write to it (failed). 3. Append the date to the file name again. 4. Successfully access the file (which has the weird file name now)
Before I know this, I was google-ing for the solution to this problem with keywords like what I have as a title on this stackoverflow question. There wasn't that much information out there. I found maybe one guy who said it happens to some people but never really explained why nor the solution. With this new information (+the internal error message from Log4Net), I was looking at different threads from the search engines. With that I found hints that it might be a permission problem.
It seems that the writing application doesn't have sufficient permission to the logs folder. The default identity of the application is usually NETWORK_SERVICE. After I give more permission (I gave it full control but i don't know what is the minimum to make it work) to the folder, it works just fine.
If anyone can explain this better than me, please feel free to edit.
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2019-07-02 jQuery file upload callback options
2019-07-02 jQuery file upload process queue
2019-07-02 How do I add a simple onClick event handler to a canvas element?
2019-07-02 JavaScript 事件不触发
2019-07-02 jquery.fileupload-image-editor.js 中actions.resizeImage
2019-07-02 What's the difference between HEAD^ and HEAD~ in Git?
2017-07-02 Create the Project