8.【原创】asp.net Web开发,实现打印Log日志,步骤详解

添加Log需要四步:

一、引用log4net.dll,详见附件:http://pan.baidu.com/s/1c0hab2g

二、项目根目录下,添加 log4net.xml

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
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置-->
<file value="D:/log4netfile/BYPlatformWAPI.log" />
<!--是否追加到文件-->
<appendToFile value="true" />
<!--名称是否可以更改 为false为可以更改-->
<param name="StaticLogFileName" value="false"/>
<!--变换的形式为日期-->
<rollingStyle value="Date" />
<!--日期的格式-->
<datePattern value="yyyyMMdd-HHmmss" />
<layout type="log4net.Layout.PatternLayout">
<!--<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />-->
<conversionPattern value="记录时间:%date 日志级别:%level Log类:%logger - Log描述:\n %message%newline" />
</layout>
</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数据库中,数据库为C盘的log4net.mdb-->
<appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
<connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" />
<commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />
<!--定义各个参数-->
<parameter>
<parameterName value="@logDate" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date" />
</layout>
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@logLevel" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
<!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
<root>
<level value="ALL" />
<!--文件形式记录日志-->
<appender-ref ref="LogFileAppender" />
<!--控制台控制显示日志
<appender-ref ref="ConsoleAppender" />-->
<!--Windows事件日志
<appender-ref ref="EventLogAppender" />-->
<!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
<appender-ref ref="AdoNetAppender_Access" />
-->
</root>

</log4net>
</configuration>

三、在\Properties\AssemblyInfo.cs文件的底部,添加一句:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.xml", Watch = true)]
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
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的常规信息通过下列特性集
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("Web")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Web")]
[assembly: AssemblyCopyright("版权所有(C) 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 将 ComVisible 设置为 false 会使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的某个类型,
// 请针对该类型将 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("940997e2-1820-4f8b-b280-2e1bf426fe27")]

// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 内部版本号
// 修订号
//
// 可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,
// 方法是按如下所示使用“*”:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

//添加下面这句
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.xml", Watch = true)]

AssemblyInfo.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
public class ConnectController : ApiController
{
#region 全局变量
/// <summary>
/// 日志引用
/// </summary>
private static log4net.ILog Log = LogManager.GetLogger("类名");
#endregion

public void Main()
{
try
{
Log.Debug("\n");
Log.Debug("Log 开始!");
}
catch (Exception ex)
{
Log.Error("Log 异常 :", ex);
}
finally
{
Log.Debug("Log 结束!");
}
}
}

7..Net将多个DLL打包为一个DLL(ILMerge)

在做.Net底层编码过程中,为了功能独立,有可能会生成多个DLL,引用时非常不便。这方面微软提供了一个ILMerge工具原版DOS工具,可以将多个DLL合并成一个。下载完成后需要安装一下,然后通过DOS命令进入。具体用法如下:

1
2
D:\Program Files\Microsoft\ILMerge>ilmerge /log:log.txt /targetplatform:v4 /
out:merge.dll AnalysisLibrary.dll USBClassLibrary.dll

说明:此操作的目的是:将当前目录下的AnalysisLibrary.dll和USBClassLibrary.dll类库,按照.NetFramework 4.0形式(V4)合并成merge.dll。

其中:/log:log.txt命令是将生成过程中的日志,写入到log.txt文件中。out:merge.dll:是输出文件。AnalysisLibrary.dll USBClassLibrary.dll是源文件,多个源文件用空格隔开。

当然也有人添加了界面,如果不习惯DOS命令,也可以到此处下载GUI界面工具。请下载1.9版本或更新的版本,1.0版本仅支持到Framework2.0。界面工具比较简单,此处不赘。

装载:

.Net将多个DLL打包为一个DLL(ILMerge)


:D 一言句子获取中...