zoukankan
html css js c++ java
如何在 Windows 服务中正确使用 log4net
前几天写了一个 Windows 服务程序,其中使用 log4net 却总是失败。
不论 log4net 的配置写在 app.config 里,还是独立的 config 文件里,都是一样。
今天终于发现原来是在服务里不能正确定位到这个配置文件所致。
于是经过尝试之后,发现关键在于如下代码中获取当前 exe 所在目录并用于得到 config 文件的路径。按这个写法就可以正确输出日志了:
public
class
Service1 : ServiceBase
{
//
进程的主入口点
private
static
void
Main()
{
string
assemblyFilePath
=
Assembly.GetExecutingAssembly().Location;
string
assemblyDirPath
=
Path.GetDirectoryName(assemblyFilePath);
string
configFilePath
=
assemblyDirPath
+
"
\\log4net.config
"
;
DOMConfigurator.ConfigureAndWatch(
new
FileInfo(configFilePath));
ServiceBase[] ServicesToRun;
ServicesToRun
=
new
ServiceBase[]
{
new
Service1()}
;
ServiceBase.Run(ServicesToRun);
}
//
其他略
}
其他的不多写了,附带我的 log4net.config:
<?
xml version="1.0" encoding="utf-8"
?>
<
log4net
>
<
appender
name
="RollingLogFileAppender"
type
="log4net.Appender.RollingFileAppender"
>
<
file
value
="Logs/log.txt"
/>
<
appendToFile
value
="true"
/>
<
rollingStyle
value
="Size"
/>
<
maxSizeRollBackups
value
="10"
/>
<
maximumFileSize
value
="100KB"
/>
<
staticLogFileName
value
="true"
/>
<
layout
type
="log4net.Layout.PatternLayout"
>
<
conversionPattern
value
="%d [%t] %-5p %c [%x] -%m%n"
/>
</
layout
>
</
appender
>
<
root
>
<
level
value
="ALL"
/>
<
appender-ref
ref
="RollingLogFileAppender"
/>
</
root
>
</
log4net
>
查看全文
相关阅读:
常见数据结构的Java实现
ASP.NET WEB API的服务托管(Self-HOST)
Twitter Bootstrap3小结
RESTful API后台系统架构设计(Java)
同步函数的异步化
C#并行库(TaskParallelLibrary)用法小结
RestSharp用法小结
如何选择JAVA培训机构,兼议什么样的人适合培训机构
从零开始理解JAVA事件处理机制(3)
简单实用UML关系图解
原文地址:https://www.cnblogs.com/RChen/p/217832.html
最新文章
深入浅出 REST(转)
用pyenv管理Python多版本及下载加速方法--Mac上
软件工程师如何提升自己的思考力(转)
怎样学习一门新技术?(转)
【生活现场】从打牌到map-reduce工作原理解析(转)
【生活现场】从诗词大会飞花令到elasticsearch原理解析(转)
gevent介绍(转)
拼手气分5亿,你的五福集齐了吗?
纯干货分享丨内网渗透很难学吗?
Cobalt Strike系列教程第七章:提权与横向移动
热门文章
Cobalt Strike系列教程第六章:安装扩展
CTF夺旗赛丨网络内生安全试验场第四季圣诞赛明日开赛!
10分钟浅谈CSRF突破原理,Web安全的第一防线!
Cobalt Strike系列教程第五章:截图与浏览器代理
Cobalt Strike系列教程第四章:文件/进程管理与键盘记录
互联网安全城市巡回赛2019北京站——王者之战,谁与争锋!
Cobalt Strike系列教程第三章:菜单栏与视图
Javascript是单线程的深入分析
OSGI动态加载删除Service bundle
非阻塞同步算法与CAS(Compare and Swap)无锁算法
Copyright © 2011-2022 走看看