首页 新闻 会员 周边

【实在是纳闷】关于Log4net的局域网写入文件的权限问题

0
悬赏园豆:180 [已解决问题] 解决于 2015-07-28 14:09

         这几天在重新整理Log4net的日志记录功能。

         需求:想把每台机器上记录的Log4日志文件归总在一台局域网LogServer上。

         对配置文件代码做出的调整:

         <log4net>
    <appender name="ErrorLogger" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString">
        <conversionPattern value="\\192.168.1.110\log4net\Web\%date{yyyy}\%date{MM}\Logger_%date{yyyyMMdd}.log" />
      </file>
      <param name="AppendToFile" value="true" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d [%t] %-5p %c [%x] - %m%n" />
        <!--%aspnet-request{UserHostAddress}-->
        <param name="Header" value="[Header]&#xA;" />
        <param name="Footer" value="[Footer]&#xA;" />
      </layout>
    </appender>
    <root>
      <!-- Setup the root category, add the appenders and set the default level -->
      <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
      <level value="ALL" />
      <appender-ref ref="ErrorLogger" />
    </root>
  </log4net>

         其中,局域网机器192.168.1.110的log4net目录做了共享,并给予了Everyone读写权限。

         结果:日志文件没有被按期望写入到指定的共享目录中。

         后续验证:写了一个控制台的exe Log测试写入程序,配置文件与上述一样,上传到服务器后手动执行,日志文件写入成功,所以在想是否是IIS关于局域网机器的权限问题,查阅了很多资料,没有找到这方面的信息,特来园子恳请各位大神解惑!

维依的主页 维依 | 初学一级 | 园豆:16
提问于:2015-07-16 17:50
< >
分享
最佳答案
0
收获园豆:100
dudu | 高人七级 |园豆:30994 | 2015-07-16 18:00

按照你提供的方案,可以解决我的问题了。

维依 | 园豆:16 (初学一级) | 2015-07-17 15:20
其他回答(3)
0

如果是部署在 IIS 中的话,就会有 I/O 权限问题,你可以将应用程序池的用户设置为 LocalSystem,虽然这样不安全。

 

PS:如果是大规模日志写入的话,我还是建议你将日志作为服务部署。

收获园豆:20
Launcher | 园豆:45045 (高人七级) | 2015-07-16 18:00

谢谢你的建议!

支持(0) 反对(0) 维依 | 园豆:16 (初学一级) | 2015-07-17 09:27
0

我比较纳闷的是怎么不在LogServer上放个数据库,把日志写到数据库里。

收获园豆:10
liqipeng | 园豆:1160 (小虾三级) | 2015-07-16 20:19

这个我只想作为文件级别来存储,不需要再数据库中体现啊。

支持(0) 反对(0) 维依 | 园豆:16 (初学一级) | 2015-07-17 09:23

@维依: log4net改数据库方式很简单,何必用共享目录这么不安全还折腾的方式。

支持(0) 反对(0) liqipeng | 园豆:1160 (小虾三级) | 2015-07-17 13:09

@liqipeng: 嗯  挺感谢你的建议,从安全性的角度来讲,我的初衷可能不是最好的解决方案。谢谢

支持(0) 反对(0) 维依 | 园豆:16 (初学一级) | 2015-07-17 15:22
0

使用WebService或者使用数据库都是比较好一点的方法,

你都一堆服务器了(最差也有两台),也不差弄个数据库或是写个WebService了吧。

不要为了方便让服务器的安全系数减少几十倍。

收获园豆:50
爱编程的大叔 | 园豆:30839 (高人七级) | 2015-07-17 10:13

有道理,谢谢大神的提醒!感谢。是可以考虑用windows服务或者webservice接口的方式来进行实现。

支持(0) 反对(0) 维依 | 园豆:16 (初学一级) | 2015-07-17 15:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册