log4net_数据库方式记录
来源:互联网 发布:手机数据分区发生破坏 编辑:程序博客网 时间:2024/05/16 17:10
第一 添加 log4net.dll 引用
第二 复制一份 log4net.config 到网站根目录下面
第三
C/S应用程序:(应用程序主入口 main 方法里面,一定要在程序加载之前) 12345678910string
strDataDir = AppDomain.CurrentDomain.BaseDirectory.ToLower();
if
(strDataDir.EndsWith(
@"\bin\debug\"
) || strDataDir.EndsWith(
@"\bin\release"
)){
strDataDir = System.IO.Directory.GetParent(strDataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData(
"DataDirectory"
, strDataDir);
}
log4net.Config.XmlConfigurator.ConfiureAndWatch(
new
System.IO.FileInfo(strDataDir +
@"\log4net.config"
),
true
);
1
2
3
4
5
6
7
8
9
10
string
strDataDir = AppDomain.CurrentDomain.BaseDirectory.ToLower();
if
(strDataDir.EndsWith(
@"\bin\debug\"
) || strDataDir.EndsWith(
@"\bin\release"
)){
strDataDir = System.IO.Directory.GetParent(strDataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData(
"DataDirectory"
, strDataDir);
}
log4net.Config.XmlConfigurator.ConfiureAndWatch(
new
System.IO.FileInfo(strDataDir +
@"\log4net.config"
),
true
);
网站:
复制[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)] 到项目 Properties 文件夹下的 AssemblyInfo.cs里面
第四 创建表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE
TABLE
[dbo].[log4net_log] (
[Id] [
int
] IDENTITY (1, 1)
NOT
NULL
,
[
Date
] [datetime]
NULL
,
--异常记录时间
[Thread] [
varchar
] (255)
NULL
,
--线程ID(数字)
[
Level
] [
varchar
] (50)
NULL
,
--日志级别(FALAT,ERROR,WARN,INFO,DEBUG)
[Logger] [
varchar
] (255)
NULL
,
--记录的类
[Message] [
varchar
] (4000)
NULL
,
--消息
[Millisecond] [
varchar
] (255),
--程序从运行到当前语句的毫秒数
[Line] [
varchar
] (255),
--行号
[FileName] [
varchar
] (255),
--所在语句的文件名
[ClassName] [
Varchar
] (255),
--类名
--[Exception] [varchar](4000) NULL
[Exception] [text]
NULL
--异常信息
)
第五 修改 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
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
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<configuration>
<configSections>
<section name=
"log4net"
type=
"System.Configuration.IgnoreSectionHandler"
/>
</configSections>
<appSettings>
</appSettings>
<log4net>
<!--定义输出到文件中-->
<!--
<appender name=
"LogFileAppender"
type=
"log4net.Appender.FileAppender"
>
-->
<!--定义文件存放位置-->
<!--
<file value=
"logs\\"
/>
<appendToFile value=
"true"
/>
<rollingStyle value=
"Date"
/>
<param name=
"DatePattern"
value=
"yyyyMMdd"
.log
""
/>
<staticLogFileName value=
"false"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
-->
<!--每条日志末尾的文字说明-->
<!--
-->
<!--每条日志开头的文字说明-->
<!--
-->
<!--<footer value=
"by 吴家龙"
/>
<header value=
"by wujialong"
/>-->
<!--
-->
<!--输出格式-->
<!--
-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(
null
)] - info-->
<!--
<conversionPattern value=
"记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"
/>
</layout>
</appender>-->
<appender name=
"LogFileAppender"
type=
"log4net.Appender.RollingFileAppender"
>
<!--日志文件路径-->
<!--相对路径,在项目的根目录下-->
<!--以最后一个路径为准-->
<param name=
"File"
value=
"Kodlog\\Logs\\"
/>
<param name=
"AppendToFile"
value=
"true"
/>
<!--可以为:Once|Size|Date|Composite-->
<!--Composite为Size和Date的组合-->
<param name=
"RollingStyle"
value=
"Date"
/>
<!--当备份文件时,为文件名加的后缀-->
<!--后缀为*.txt时,例:AX.txt_2008-07-24.PxP 应该是程序上的一个bug-->
<!--后缀为*.TXT时,例:AX.txt_2008-07-25.TXT-->
<param name=
"DatePattern"
value=
"yyyyMMdd"
.log
""
/>
<!--置为
true
,当前最新日志文件名永远为file节中的名字-->
<param name=
"StaticLogFileName"
value=
"false"
/>
<param name=
"MaxSizeRollBackups"
value=
"100"
/>
<param name=
"MaxFileSize"
value=
"10240"
/>
<!--这两个好像无效-->
<layout type=
"log4net.Layout.PatternLayout"
>
<!--输出样式-->
<param name=
"ConversionPattern"
value=
"时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}][行号:%L] - 错误描述:%message%newline"
/>
<param name=
"Header"
value="
----------------------header--------------------------
" />
<param name=
"Footer"
value="
----------------------footer--------------------------
" />
</layout>
<!--<filter type=
"log4net.Filter.LevelRangeFilter"
>
<param name=
"LevelMin"
value=
"WARN"
/>
<param name=
"LevelMax"
value=
"FATAL"
/>
</filter>-->
</appender>
<!--定义输出到控制台命令行中-->
<appender name=
"ConsoleAppender"
type=
"log4net.Appender.ConsoleAppender"
>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"
/>
</layout>
</appender>
<!--定义输出到windows事件中-->
<appender name=
"EventLogAppender"
type=
"log4net.Appender.EventLogAppender"
>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"
/>
</layout>
</appender>
<!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为log4net.mdb-->
<appender name=
"AdoNetAppender_SQL"
type=
"log4net.Appender.AdoNetAppender"
>
<bufferSize value=
"5"
/>
<connectionType value=
"System.Data.SqlClient.SqlConnection,System.Data, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"
/>
<connectionString value=
"Server=.;Initial Catalog=gy01tuan;Integrated Security=True;"
/>
<commandText value=
"INSERT INTO log4net_log([ClassName],[FileName],[Line],[Millisecond], [Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES(@ClassName, @FileName, @Line, @Millisecond, @log_date, @thread, @log_level, @logger, @message, @exception)"
/>
<parameter>
<parameterName value=
"@ClassName"
/>
<dbType value=
"String"
/>
<size value=
"255"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%c"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@FileName"
/>
<dbType value=
"String"
/>
<size value=
"255"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%F"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@Line"
/>
<dbType value=
"String"
/>
<size value=
"255"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%L"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@Millisecond"
/>
<dbType value=
"String"
/>
<size value=
"255"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%r"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@log_date"
/>
<dbType value=
"DateTime"
/>
<layout type=
"log4net.Layout.RawTimeStampLayout"
/>
</parameter>
<parameter>
<parameterName value=
"@thread"
/>
<dbType value=
"String"
/>
<size value=
"255"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%thread"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@log_level"
/>
<dbType value=
"String"
/>
<size value=
"50"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%level"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@logger"
/>
<dbType value=
"String"
/>
<size value=
"255"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%logger"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@message"
/>
<dbType value=
"String"
/>
<size value=
"4000"
/>
<layout type=
"log4net.Layout.PatternLayout"
>
<conversionPattern value=
"%message"
/>
</layout>
</parameter>
<parameter>
<parameterName value=
"@exception"
/>
<dbType value=
"String"
/>
<size value=
"4000"
/>
<layout type=
"log4net.Layout.ExceptionLayout"
/>
</parameter>
</appender>
<!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
<root>
<level value=
"ALL"
/>
<!--文件形式记录日志-->
<appender-
ref
ref
=
"LogFileAppender"
/>
<!--控制台控制显示日志-->
<appender-
ref
ref
=
"ConsoleAppender"
/>
<!--Windows事件日志
<appender-
ref
ref
=
"EventLogAppender"
/>-->
<!-- 如果不启用相应的日志记录,可以通过这种方式注释掉-->
<appender-
ref
ref
=
"AdoNetAppender_SQL"
/>
</root>
</log4net>
</configuration>
<appender-ref ref="AdoNetAppender_SQL" />意思是启用与 AdoNetAppender_SQL 相关的配置
log4net 可以把日志记录到多个目标上面。
以上五步,排名不分先后,只要做全了就可以。
最后,第六,在需要记录的地方声明:
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
并
lon.Info("测试");
因为 log4net 内部的错误是输出到控制台的,如果以上都没有结果出来,建议做一个 ConsoleAppliction ,并把log4net配置为可以输出到控制台,这样,就可以根据输出信息知道是哪里配置出了问题。
- log4net_数据库方式记录
- 数据库记录删除方式
- 数据库插入记录的两种方式
- SQL Server数据库多种方式查找重复记录
- SQL Server数据库多种方式查找重复记录
- SQL Server数据库多种方式查找重复记录
- 数据库中分组第N条记录获取方式
- SQL Server数据库多种方式查找重复记录
- Linux RPM 数据库记录的方式管理应用
- SQL Server数据库多种方式查找重复记录
- 数据库记录
- 数据库记录
- 数据库记录
- 数据库记录
- C#中数据库的更新和删除记录的两种实现方式
- C#中数据库的更新和删除记录的两种实现方式
- 获取oracle数据库中表中记录行数,不使用select count()方式
- R语言连接SQL数据库的两种方式配置过程记录
- 高效C#编码优化
- C++里TRUE和true DWORD和HWND区别
- instanceof 与isAssignableFrom
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别[转载]
- 10月7日梦
- log4net_数据库方式记录
- 为什么要将工作环境,转移到linux下?
- locale的LANG、LC_ALL、LANGUAGE环境变量的区别
- Android ScrollView与ListView,GridView共存冲突解决方案
- [转]Building a iOS Unity + UIView / UIViewController / Interface Builder App
- java文件中不一定要有public的class,除非文件名要是这个public类的名字
- java多线程(二)
- 线程条件变量
- C#中Trim()、TrimStart()、TrimEnd()的用法