在4层VB.NET应用程序的第4个“实用层” DLL中使用NLog

时间:2018-11-30 01:35:21

标签: vb.net nlog

我正在重新编写一些具有更好体系结构的程序。它们是VS 2017中较小,相对简单的多项目解决方案,包括WinForms中的GUI,BLL类库和DAL类库-全部在VB.NET中。

一切正常,我几乎没有问题。我正在使用NLog记录到数据库,并且运行良好。目前,它仅在一层GUI上登录。我将所有异常都扔到顶层并将其捕获到那里,并将其记录在那里。

我想更改我使用NLog的方式并将其与GUI,BLL和DAL层中的任何一个分开-将其迁移到第4层-实用程序类库层。

这就是我所做的:

创建了一个带有接口和公共类的实用程序类库。公共类继承NLog Logger并隐含接口:

Public Interface ILogger
Sub Info(message As String)
Sub Info(ex As Exception, message As String)

Sub Debug(message As String)
Sub Debug(ex As Exception, message As String)

Sub [Error](message As String)
Sub [Error](ex As Exception, message As String)
End Interface

然后,上课:

Imports NLog
Public Class MyLogger
Inherits Logger
Implements ILogger
Public Shared _log As Logger = LogManager.GetLogger("databaseLogger")
Public Sub Debug(message As String) Implements ILogger.Info
    _log.Debug(message)
End Sub
Public Sub Debug(ex As Exception, message As String) Implements ILogger.Info
    _log.Debug(ex, message)
End Sub

Public Sub Info(message As String) Implements ILogger.Debug
    _log.Info(message)
End Sub
Public Sub Info(ex As Exception, message As String) Implements ILogger.Debug
    _log.Info(ex, message)
End Sub

Public Sub [Error](message As String) Implements ILogger.Error
    _log.Error(message)
End Sub
Public Sub [Error](ex As Exception, message As String) Implements ILogger.Error
    _log.Error(ex, message)
End Sub
End Class

然后我在相同的解决方案中创建了一个winform项目,引用了实用程序类,并将其粘贴在启动表单中:

Public Class Form1
Private _logger As LogTest2.ILogger

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    _logger.Debug("test")
End Sub
End Class

但是,当我运行它时,我得到了一个错误:

“对象引用未设置为对象的实例。”

我显然缺少一些东西-我已经在SO上进行了大量搜索,尽管有很多问题都显示了C#示例,但我看不到VB.NET示例。有人可以帮我吗?

0 个答案:

没有答案