1. Global文件中动态加载配置文件

Public Class Global_asax
Inherits System.Web.HttpApplication

Public Const LANGUAGE_COOKIE_NAME As String = "UserLanguage"

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Fires when the application is started

log4net.Config.XmlConfigurator.ConfigureAndWatch(New System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "\Log4net.config"))
Try
LoggerManager.AddInfo("Application starting...")
Catch

End Try

End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Fires when the session is started
End Sub

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' Fires at the beginning of each request
Dim lang As String

Dim languageCookie As HttpCookie = Request.Cookies(LANGUAGE_COOKIE_NAME)

If (languageCookie Is Nothing) Then

lang = Common.WebConfig.DefaultLanguage

Response.Cookies.Add(New HttpCookie(LANGUAGE_COOKIE_NAME, lang))
Else
lang = languageCookie.Value
End If
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang)
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(lang)

'Dim culture As CultureInfo = New CultureInfo(lang)
'System.Threading.Thread.CurrentThread.CurrentUICulture = culture
End Sub

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
' Fires upon attempting to authenticate the use
End Sub

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Fires when an error occurs
Dim ex As Exception = Server.GetLastError
Session("Exception") = ex
Try
LoggerManager.AddError("Application error occurred.", ex)
Catch

End Try
Server.ClearError()

Response.Redirect(Common.WebConfig.ErrorPage)

End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Fires when the session ends
End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Fires when the application ends
Try
LoggerManager.AddInfo("Application ending...")
Catch

End Try
End Sub

End Class

2. 类LoggerManager

Imports log4net
Imports Common

Public Class LoggerManager
'Pre-defined logger name in web.config or app.config
Public Shared LOGGER_NAME As String = "MainLog"
Public Shared Logger As ILog = log4net.LogManager.GetLogger(LOGGER_NAME)

'/ <summary>
'/ Add a error log
'/ </summary>
'/ <param name="errorMessage"></param>
Public Overloads Shared Sub AddError(ByVal errorMessage As String)
Logger.Error(errorMessage)
End Sub 'AddError


'/ <summary>
'/ Add a error log with an exception
'/ </summary>
'/ <param name="errorMessage"></param>
'/ <param name="ex"></param>
Public Overloads Shared Sub AddError(ByVal errorMessage As String, ByVal ex As Exception)
Logger.Error((errorMessage + System.Environment.NewLine + ex.Message + System.Environment.NewLine + ex.ToString()))
End Sub 'AddError


'/ <summary>
'/ Add a warning log
'/ </summary>
'/ <param name="warnMessage"></param>
Public Overloads Shared Sub AddWarn(ByVal warnMessage As String)
Logger.Warn(warnMessage)
End Sub 'AddWarn


'/ <summary>
'/ Add a warning log with an exception
'/ </summary>
'/ <param name="warnMessage"></param>
'/ <param name="ex"></param>
Public Overloads Shared Sub AddWarn(ByVal warnMessage As String, ByVal ex As Exception)
Logger.Warn((warnMessage + System.Environment.NewLine + ex.Message + System.Environment.NewLine + ex.ToString()))
End Sub 'AddWarn


'/ <summary>
'/ Add a info log
'/ </summary>
'/ <param name="infoMessage"></param>
Public Overloads Shared Sub AddInfo(ByVal infoMessage As String)
Logger.Info(infoMessage)
End Sub 'AddInfo


'/ <summary>
'/ Add a info log with an exception
'/ </summary>
'/ <param name="infoMessage"></param>
'/ <param name="ex"></param>
Public Overloads Shared Sub AddInfo(ByVal infoMessage As String, ByVal ex As Exception)
Logger.Info((infoMessage + System.Environment.NewLine + ex.Message + System.Environment.NewLine + ex.ToString()))
End Sub 'AddInfo


'/ <summary>
'/ Add a debug log
'/ </summary>
'/ <param name="debugMessage"></param>
Public Overloads Shared Sub AddDebug(ByVal debugMessage As String)
Logger.Debug(debugMessage)
End Sub 'AddDebug


'/ <summary>
'/ Add a debug log with an exception
'/ </summary>
'/ <param name="debugMessage"></param>
'/ <param name="ex"></param>
Public Overloads Shared Sub AddDebug(ByVal debugMessage As String, ByVal ex As Exception)
Logger.Debug((debugMessage + System.Environment.NewLine + ex.Message + System.Environment.NewLine + ex.ToString()))
End Sub 'AddDebug


'/ <summary>
'/ Add a acitivity log, default is succeeded.
'/ </summary>
'/ <param name="activityDesc"></param>
Public Overloads Shared Sub AddActivity(ByVal activityDesc As String)
Logger.Info(activityDesc)
End Sub 'AddActivity


Public Overloads Shared Sub AddActivity(ByVal activityDesc As String, ByVal isSucceed As Boolean)
Logger.Info(activityDesc + ". " + (If(isSucceed, "Succeeded.", "Failed.")))
End Sub 'AddActivity

End Class

3. Log4net配置文件(log4net。config)

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender" />
</root>
<logger name="MainLog">
<level value="ALL" />
<appender-ref ref="RollingFileAppender" />
</logger>
<!--添加滚动文件日志-->
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!--文件所在目录-->
<param name="File" value="Log\App.log" />
<param name="AppendToFile" value="true" />
<!--追加文件-->
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="1000KB" />
<!--?每个日志文件最大容量-->
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<!--?动态生成文件名称-->
<layout type="log4net.Layout.PatternLayout">
<!--?日志输出格式-->
<param name="ConversionPattern" value="%d %-5p %-20c - %m%n" />
</layout>
</appender>
</log4net>
</configuration>

posted on 2010-10-20 15:45  Black Bean  阅读(746)  评论(0)    收藏  举报