这个东西很好用,呵呵。 而且是用在dotnet平台上的,不错。与log4j都是apache的血统。
open source的项目。本次打算在我们的新项目里使用。
以下简单写个使用步骤。
1:建立一个vb.net工程,名字叫button
2:在AssemblyInfo.vb里面添加一句
<Assembly: log4net.Config.XmlConfiguratorAttribute(Watch:=True)>
3:在工程里面引用log4net.dll(可以去
http://logging.apache.org/log4net/downloads.html下载)
4:在工程里面添加一个form1,并且把 Imports log4net 添加到form1的头部。
5: 在form1里面添加
Private Shared ReadOnly Log As log4net.ILog = _
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
6:在form1里面再添加以下代码,这段代码可以测一下多线程的log输出,呵呵。
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
6:在form1里面再添加以下代码,这段代码可以测一下多线程的log输出,呵呵。
Private Sub myTestThread()
With Log
.Debug("Button1_Click Debug")
System.Threading.Thread.Sleep(10)
.Error("Button1_Click Error")
System.Threading.Thread.Sleep(10)
.Fatal("Button1_Click Fatal")
System.Threading.Thread.Sleep(10)
.Info("Button1_Click Info")
End With
With Log
.Debug("Button1_Click Debug")
System.Threading.Thread.Sleep(10)
.Error("Button1_Click Error")
System.Threading.Thread.Sleep(10)
.Fatal("Button1_Click Fatal")
System.Threading.Thread.Sleep(10)
.Info("Button1_Click Info")
End With
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim b As Integer
b = 10
For i = 1 To 10
Dim i As Integer
Dim b As Integer
b = 10
For i = 1 To 10
Dim MyThread As New System.Threading.Thread(AddressOf myTestThread)
MyThread.Sleep(b)
MyThread.Start()
b -= 1
Next i
End Sub
MyThread.Sleep(b)
MyThread.Start()
b -= 1
Next i
End Sub
7:在你生成的button.exe的同级目录下建立一个文件button.exe.config,并且把下面内容拷贝进去
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- Register a section handler for the log4net section -->
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<appSettings>
<!-- To enable internal log4net logging specify the following appSettings key -->
<!-- <add key="log4net.Internal.Debug" value="true"/> -->
</appSettings>
<!-- This section contains the log4net configuration settings -->
<log4net>
<!-- Define some output appenders -->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="log-file.txt" />
<!-- Example using environment variables in params -->
<!-- <param name="File" value="${TMP}//log-file.txt" /> -->
<param name="AppendToFile" value="true" />
<!-- An alternate output encoding can be specified -->
<!-- <param name="Encoding" value="unicodeFFFE" /> -->
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header] " />
<param name="Footer" value="[Footer] " />
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<!-- Alternate layout using XML
<layout type="log4net.Layout.XMLLayout" /> -->
</appender>
<configuration>
<!-- Register a section handler for the log4net section -->
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
<appSettings>
<!-- To enable internal log4net logging specify the following appSettings key -->
<!-- <add key="log4net.Internal.Debug" value="true"/> -->
</appSettings>
<!-- This section contains the log4net configuration settings -->
<log4net>
<!-- Define some output appenders -->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="log-file.txt" />
<!-- Example using environment variables in params -->
<!-- <param name="File" value="${TMP}//log-file.txt" /> -->
<param name="AppendToFile" value="true" />
<!-- An alternate output encoding can be specified -->
<!-- <param name="Encoding" value="unicodeFFFE" /> -->
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header] " />
<param name="Footer" value="[Footer] " />
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
<!-- Alternate layout using XML
<layout type="log4net.Layout.XMLLayout" /> -->
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<!-- <appender-ref ref="A" /> -->
</root>
<!-- Specify the level for some specific categories -->
<logger name="button">
<!-- <appender-ref ref="B" /> -->
<level value="info" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
</configuration>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<!-- <appender-ref ref="A" /> -->
</root>
<!-- Specify the level for some specific categories -->
<logger name="button">
<!-- <appender-ref ref="B" /> -->
<level value="info" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
</configuration>
8:运行button.exe,然后就可以看到当前目录下有个log-file.txt。里面就可以看到输出的log内容。
呵呵。这只是个helloworld程序,不过确实是个好的开始,dotnet下写log不用再麻烦了!