log4net将不会在Windows 7上创建日志文件 [英] log4net will not create logfile on Windows 7
问题描述
我有一个使用log4net进行日志记录的程序集。
我在Assemblynfo.cs文件中有这个:
[assembly:log4net.Config.XmlConfigurator(ConfigFile =log4net.config,Watch = true)]
log4net.config文件如下所示:
<?xml version =1.0encoding =utf-8?>
< log4net>
< appender name =ConsoleAppendertype =log4net.Appender.ConsoleAppender>
< layout type =log4net.Layout.PatternLayout>
<! - < conversionPattern value =%date [%thread]%-5级别%logger [%ndc] - %message%newline/> - >
< conversionPattern value =% - 5p%d%5rms%-22.22c {1}%-18.18M - %m%n/>
< / layout>
< / appender>
< appender name =RollingLogFileAppendertype =log4net.Appender.RollingFileAppender>
< file value =$ {APPDATA} \\DC Lasersystem\\DCMark\\DCMarkLog.txt/>
< appendToFile value =true/>
< rollingStyle value =Date/>
< datePattern value =yyyy-MM-dd/>
< maxSizeRollBackups value =10/>
< layout type =log4net.Layout.PatternLayout>
< conversionPattern value =% - 5p%d%5rms%-22.22c {1}%-18.18M - %m%n/>
< / layout>
< / appender>
< appender name =TraceAppendertype =log4net.Appender.TraceAppender>
< layout type =log4net.Layout.PatternLayout>
< conversionPattern value =% - 5p%d%5rms%-22.22c {1}%-18.18M - %m%n/>
< / layout>
< / appender>
< appender name =EventLogAppendertype =log4net.Appender.EventLogAppender>
< layout type =log4net.Layout.PatternLayout>
<! - < conversionPattern value =%date [%thread]%-5级别%logger [%ndc] - %message%newline/> - >
< conversionPattern value =% - 5p%d%5rms%-22.22c {1}%-18.18M - %m%n/>
< / layout>
< / appender>
< root>
< level value =DEBUG/>
< appender-ref ref =RollingLogFileAppender/>
< / root>
< / log4net>
当我从IDE运行我的应用程序时,它工作。 DCMarkLog.txt文件在%APPDATA%\DC Lasersystem\DCMark
目录中创建。
我安装应用程序并从Program Files目录运行它,然后我没有得到一个日志文件!
我在安装目录中有与Release目录中相同的文件。
我猜这是一种不正确的权限...
有一个线索?
// Anders
权限问题。在Windows 7中,您需要管理员权限才能写入 Program Files
目录。您必须:
- 以管理员身份运行您的应用程序
要查找正确的写入位置,请参阅:
在Windows 7和Vista中存储应用程序数据的位置< a>
I have an assembly that uses log4net for logging.
I have this in the Assemblynfo.cs file:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
The log4net.config file looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<!-- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> -->
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="${APPDATA}\\DC Lasersystem\\DCMark\\DCMarkLog.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=" yyyy-MM-dd" />
<maxSizeRollBackups value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<layout type="log4net.Layout.PatternLayout">
<!-- <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> -->
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
When I run my application from the IDE it works. The DCMarkLog.txt file is created in %APPDATA%\DC Lasersystem\DCMark
directory.
BUT When I install the application and run it from Program Files directory then I don't get a log file!
I have the same files in the install directory as in the Release directory.
I'm guessing it's some kind of permission that isn't right...
Anyone that has a clue?
// Anders
This is a permission issue. In Windows 7 you require administrator rights to write to the Program Files
directory. You will have to either:
- Run your application as Administrator
- Or the preferred way write your log file to a folder where user has write access to.
To find the correct location to write to refer to: Where to store Application Data in Windows 7 and Vista
这篇关于log4net将不会在Windows 7上创建日志文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!