配色: 字号:
Log4Net 日志配置[附带源码下载]
2016-12-14 | 阅:  转:  |  分享 
  
Log4Net日志配置[附带源码下载]

这篇文章主要介绍了Log4Net日志配置[附带源码下载],需要的朋友可以参考下

前述

园子里有许多人对log4net这款开源的日志记录控件有很多介绍。在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间。利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库,并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。log4net有四种主要的组件,分别是Logger(记录器),Repository(库),Appender(附着器)以及Layout(布局).

准备工作:

1.下载log4net.dll下载地址[http://logging.apache.org/log4net/download_log4net.cgi]

下载文件:log4net-1.2.13-bin-newkey.zip。解压选择对应的net版本找到log4net.dll。





2.在项目中引用log4net.dll。



实例代码

准备工作完成后我们来看下实例代码,首先在项目中创建一个文件夹LogConfig。把有关log4net的一些配置文件和类都放在这个文件夹里面。

WEB网站为例,在项目LogConfig文件夹中创建Log4Net.config配置文件。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76














































"/>


"/>


























"/>


"/>























配置文件写完后我们在来写一个Helper类。同样在项目中创建一个名为LogHelper.cs的类文件。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272 usinglog4net;

usingSystem;

usingSystem.Collections.Concurrent;

usingSystem.Collections.Generic;

//指定log4net使用的config文件来读取配置信息

[assembly:log4net.Config.XmlConfigurator(ConfigFile=@"LogConfig\Log4Net.config",Watch=true)]

namespaceProject.Log4.Net.LogConfig

{

///

///日志帮助类

///


publicclassLogHelper

{

privatestaticreadonlyConcurrentDictionary_loggers=newConcurrentDictionary();

///

///获取记录器

///


///

///

privatestaticILogGetLogger(Typesource)

{

if(_loggers.ContainsKey(source))

{

return_loggers[source];

}

else

{

ILoglogger=LogManager.GetLogger(source);

_loggers.TryAdd(source,logger);

returnlogger;

}

}

/Logamessageobject/

///

///调试信息

///


///

///

publicstaticvoidDebug(objectsource,stringmessage)

{

Debug(source.GetType(),message);

}

///

///调试信息

///


///

///

///

publicstaticvoidDebug(objectsource,stringmessage,paramsobject[]ps)

{

Debug(source.GetType(),string.Format(message,ps));

}

///

///调试信息

///


///

///

publicstaticvoidDebug(Typesource,stringmessage)

{

ILoglogger=GetLogger(source);

if(logger.IsDebugEnabled)

logger.Debug(message);

}

///

///关键信息

///


///

///

publicstaticvoidInfo(objectsource,objectmessage)

{

Info(source.GetType(),message);

}

///

///关键信息

///


///

///

publicstaticvoidInfo(Typesource,objectmessage)

{

ILoglogger=GetLogger(source);

if(logger.IsInfoEnabled)

logger.Info(message);

}

///

///警告信息

///


///

///

publicstaticvoidWarn(objectsource,objectmessage)

{

Warn(source.GetType(),message);

}

///

///警告信息

///


///

///

publicstaticvoidWarn(Typesource,objectmessage)

{

ILoglogger=GetLogger(source);

if(logger.IsWarnEnabled)

logger.Warn(message);

}

///

///错误信息

///


///

///

publicstaticvoidError(objectsource,objectmessage)

{

Error(source.GetType(),message);

}

///

///错误信息

///


///

///

publicstaticvoidError(Typesource,objectmessage)

{

ILoglogger=GetLogger(source);

if(logger.IsErrorEnabled)

logger.Error(message);

}

///

///失败信息

///


///

///

publicstaticvoidFatal(objectsource,objectmessage)

{

Fatal(source.GetType(),message);

}

///

///失败信息

///


///

///

publicstaticvoidFatal(Typesource,objectmessage)

{

ILoglogger=GetLogger(source);

if(logger.IsFatalEnabled)

logger.Fatal(message);

}

/Logamessageobjectandexception/

///

///调试信息

///


///

///

///

publicstaticvoidDebug(objectsource,objectmessage,Exceptionexception)

{

Debug(source.GetType(),message,exception);

}

///

///调试信息

///


///

///

///

publicstaticvoidDebug(Typesource,objectmessage,Exceptionexception)

{

GetLogger(source).Debug(message,exception);

}

///

///关键信息

///


///

///

///

publicstaticvoidInfo(objectsource,objectmessage,Exceptionexception)

{

Info(source.GetType(),message,exception);

}

///

///关键信息

///


///

///

///

publicstaticvoidInfo(Typesource,objectmessage,Exceptionexception)

{

GetLogger(source).Info(message,exception);

}

///

///警告信息

///


///

///

///

publicstaticvoidWarn(objectsource,objectmessage,Exceptionexception)

{

Warn(source.GetType(),message,exception);

}

///

///警告信息

///


///

///

///

publicstaticvoidWarn(Typesource,objectmessage,Exceptionexception)

{

GetLogger(source).Warn(message,exception);

}

///

///错误信息

///


///

///

///

publicstaticvoidError(objectsource,objectmessage,Exceptionexception)

{

Error(source.GetType(),message,exception);

}

///

///错误信息

///


///

///

///

publicstaticvoidError(Typesource,objectmessage,Exceptionexception)

{

GetLogger(source).Error(message,exception);

}

///

///失败信息

///


///

///

///

publicstaticvoidFatal(objectsource,objectmessage,Exceptionexception)

{

Fatal(source.GetType(),message,exception);

}

///

///失败信息

///


///

///

///

publicstaticvoidFatal(Typesource,objectmessage,Exceptionexception)

{

GetLogger(source).Fatal(message,exception);

}

}

} 配置和Helper类都有了..现在来看看调用方法。在项目中创建一个index.aspx页面

1

2

3

4

5 LogHelper.Debug(this,"Debug");

LogHelper.Error(this,"Error");

LogHelper.Fatal(this,"Fatal");

LogHelper.Info(this,"Info");

LogHelper.Warn(this,"Warn"); 日志生成格式[每天一个文件]:

DownloadApachelog4net?



Apachelog4netisdistributedundertheApacheLicense,version2.0.



Startingwithlog4net1.2.11log4netisavailableassourceonlyorbinaryonlyrelease.



UserswhodownloadtheZIPfilestoWindowsmayneedtounblockthearchive(rightclickontheZIPandpressthe"Unblock"button)beforeextractingit.



UsingaMirror



Werecommendyouuseamirrortodownloadourreleasebuilds,butyoumustverifytheintegrityofthedownloadedfilesusingsignaturesdownloadedfromourmaindistributiondirectories.Recentreleases(48hours)maynotyetbeavailablefromthemirrors.



Youarecurrentlyusingapache.fayea.www.visa158.com/.Ifyouencounteraproblemwiththismirror,pleaseselectanothermirror.Ifallmirrorsarefailing,therearebackupmirrors(attheendofthemirrorslist)thatshouldbeavailable.



Othermirrors:Change



TheKEYSlinklinkstothecodesigningkeysusedtosigntheproduct.ThePGPlinkdownloadstheOpenPGPcompatiblesignaturefromourmainsite.TheMD5linkdownloadsthechecksumfromthemainsite.



log4net1.2.15



Source



log4net-1.2.15-src.zip md5 pgp

Binaries



Therearetwodifferentbinaryreleases,oldkeyandnewkey.Bothcontainassembliesbuiltformostsupportedplatformsandhavebeenbuiltfromthesamecodebase,theyonlydifferinthestrongnamekeyusedtosigntheassemblies.



SeetheFAQforwww.hunanwang.netbackground.Werecommendyouusetheassembliessignedwiththe"new"keywheneverpossible.



log4net-1.2.15-bin-newkey.zip md5 pgp

log4net-1.2.15-bin-oldkey.zip md5 pgp

Archives



Release1.2.11andallmorerecentreleasesareavailablefromtheApacheSoftwareFoundation''sdistributionarchive.



The1.2.10and1.2.9releaseshavebeencreatedwhilelog4netwasstillundergoingincubationandthosereleasesareavailablefromthedistributionarchivefortheIncubatorproject.



Previousreleasesoflog4netareavailablefromtheSourceForgeProjectSite.



VerifyReleases



ItisessentialthatyouverifytheintegrityofthedownloadedfilesusingthePGPsignatureorMD5checksums.ThechecksumsarenotasstrongindicatorsasthePGPsignature.



PleasereadVerifyingApacheHTTPServerReleasesformoreinformationonwhyyoushouldverifyourreleases.ThePGPkeysusedtosignourdistributionsarepartoftheKEYSfile.



参数说明

Log4Net.config是配置日志输出参数文件。在这个文件中可以到看很多配置节点,大体可以分为二个大类......。我们来看看这些节点都是啥意思。

1:..:申明自定义节点log4net解析的类名和程序集名(log4net.dll)。2:..:使用log4net的配置信息都在这里设置。来重点看看都有那些设置信息,这个大节点整体也可以分为二类。

2.1:定义输出信息设置节点。2.2:定义日志的输出媒介

配置的总体结构就是这样,下面来看一些详细内容。

appender:决定日志输出的方式(可设置多个节点,如对INFO,ERROR等设置不同的输出方式)。

主要包括已下几种:

1AnsiColorTerminalAppender:在ANSI窗口终端写下高亮度的日志事件。2AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。3BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。4ConsoleAppender:将日志输出到控制台。5EventLogAppender:将日志写到WindowsEventLog.6FileAppender:将日志写到文件中。7LocalSyslogAppender:将日志写到localsyslogservice(仅用于UNIX环境下).8MemoryAppender:将日志存到内存缓冲区。9NetSendAppender:将日志输出到WindowsMessengerservice.这些日志信息将在用户终端的对话框中显示。10RemoteSyslogAppender:通过UDP网络协议将日志写到Remotesyslogservice。11RemotingAppender:通过.NETRemoting将日志写到远程接收端。12RollingFileAppender:将日志以回滚文件的形式写到文件中。(实例代码中使用的是此类型)13SmtpAppender:将日志写到邮件中。14TraceAppender:将日志写到.NETtrace系统。15UdpAppender:将日志connectionlessUDPdatagrams的形式送到远程宿主或以UdpClient的形式广播。

从上面提供的方式中可以看出能输出文件、控制台、Windows事件日志和数据库。这个可根据实际情况选择。

复制代码代码如下:

...

这里配置的name(“Log4Net_INFO”)会在定义日志的输出媒介中使用到。name可任意设置。

在appender节点中还会配置一些文件存放的地址,日志个数等信息。这些在实例代码中都在体现,这里不做说明。我们在来看看日志最后输出呈现的布局设置信息。

1

2

3

4

5

6

7

8













1

2

3

4

5

6

7

8

9



































献花(0)
+1
(本文系白狐一梦首藏)