最佳答案
我知道这不是个好主意,但是..。 我想从头开始通过编程方式配置 log4net,不需要任何配置文件。我正在为我和我的团队开发一个简单的日志应用程序,用于我们负责的一些相对较小的部门应用程序。我要他们都登录到同一个数据库。日志应用程序只是预先配置了 AdoNetAppender 的 log4net 的包装器。
所有应用程序都是 ClickOnce 部署的,这在部署配置文件时会出现一个小问题。如果配置文件是核心项目的一部分,我可以将其属性设置为与程序集一起部署。但是它是链接应用程序的一部分,所以我不能选择将它与主应用程序一起部署。(如果这不是真的,请让我知道)。
可能是因为这是一个坏主意,所以似乎没有太多示例代码可用于从头开始通过编程方式配置 log4net。这是我目前掌握的情况。
Dim apndr As New AdoNetAppender()
apndr.CommandText = "INSERT INTO LOG_ENTRY (LOG_DTM, LOG_LEVEL, LOGGER, MESSAGE, PROGRAM, USER_ID, MACHINE, EXCEPTION) VALUES (@log_date, @log_level, @logger, @message, @program, @user, @machine, @exception)"
apndr.ConnectionString = connectionString
apndr.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
apndr.CommandType = CommandType.Text
Dim logDate As New AdoNetAppenderParameter()
logDate.ParameterName = "@log_date"
logDate.DbType = DbType.DateTime
logDate.Layout = New RawTimeStampLayout()
apndr.AddParameter(logDate)
Dim logLevel As New AdoNetAppenderParameter()
logLevel.ParameterName = "@log_level"
'And so forth...
在为 apndr
配置了所有参数之后,我首先尝试了这个..。
Dim hier As Hierarchy = DirectCast(LogManager.GetRepository(), Hierarchy)
hier.Root.AddAppender(apndr)
但是没有用,然后,作为一个试验,我尝试了这个方法。
BasicConfigurator.Configure(apndr)
那也没用。是否有任何人有任何好的参考如何配置 log4net 从头开始没有配置文件?