diff --git a/Modules.Logging/LogConfig.vb b/Modules.Logging/LogConfig.vb
index f0042e19..297ebd72 100644
--- a/Modules.Logging/LogConfig.vb
+++ b/Modules.Logging/LogConfig.vb
@@ -8,7 +8,7 @@ Imports NLog.Targets
'''
''' VERSION: 0.0.0.1
'''
-''' DATE: 17.08.2018
+''' DATE: 20.08.2018
'''
''' DESCRIPTION: Module that writes file-logs to different locations:
''' local application data, the current directory or a custom path.
@@ -19,26 +19,48 @@ Imports NLog.Targets
''' DEPENDENCIES: NLog, >= 4.5.8
'''
''' PARAMETERS: logPath, PathType
+''' The basepath to write logs to. Can be AppData, CurrentDirectory or CustomPath.
+'''
+''' - AppData: writes to local application data directory
+''' - CurrentDirectory: writes to `Log` directory relative to the current directory
+''' - CustomPath: writes to custom path specified in `customLogPath`
+'''
''' customLogPath, String (optional)
+''' If `logPath` is set to custom, this defines the custom logPath.
+'''
+''' suffix, String (optional)
+''' If set to anything other than Nothing, extends the logfile name with this suffix.
'''
''' PROPERTIES: LogFile, String (readonly)
+''' Contains the full path of the default log file.
+'''
''' LogPath, String (readonly)
+''' Contains the path to the log directory.
+'''
''' Debug, Boolean
+''' Determines if the debug log should be written.
+'''
+''' REMARKS: If logpath can not be written to, falls back to temp folder as defined in:
+''' https://docs.microsoft.com/de-de/dotnet/api/system.io.path.gettemppath?view=netframework-4.7.2
'''
Public Class LogConfig
Private Const KEEP_FILES_OPEN As Boolean = False
+ ' MAX_ARCHIVES_FILES works like this (in version 4.5.8):
+ ' 0 = keep ALL archives files
+ ' 1 = only keep latest logfile and NO archive files
+ ' n = keep n archive files
Private Const MAX_ARCHIVE_FILES_DEFAULT As Integer = 30
Private Const MAX_ARCHIVE_FILES_DEBUG_DETAIL As Integer = 1
Private Const ARCHIVE_EVERY As FileArchivePeriod = FileArchivePeriod.Day
- Private Const FILE_NAME_FORMAT_DEFAULT As String = "${shortdate}-${var:product}.log"
- Private Const FILE_NAME_FORMAT_DETAIL As String = "${shortdate}-${var:product}-Detail.log"
- Private Const FILE_NAME_FORMAT_DEBUG As String = "${shortdate}-${var:product}-Debug.log"
+ Private Const FILE_NAME_FORMAT_DEFAULT As String = "${shortdate}-${var:product}${var:suffix}.log"
+ Private Const FILE_NAME_FORMAT_DETAIL As String = "${shortdate}-${var:product}${var:suffix}-Detail.log"
+ Private Const FILE_NAME_FORMAT_DEBUG As String = "${shortdate}-${var:product}${var:suffix}-Debug.log"
- Private Const TARGET_DEFAULT As String = "default"
- Private Const TARGET_DEFAULT_EX As String = "defaultEx"
- Private Const TARGET_DETAIL As String = "detail"
- Private Const TARGET_DEBUG As String = "debug"
+ Private Const TARGET_DEFAULT As String = "defaultTarget"
+ Private Const TARGET_DEFAULT_EX As String = "defaultExTarget"
+ Private Const TARGET_DETAIL As String = "detailTarget"
+ Private Const TARGET_DEBUG As String = "debugTarget"
Private Const LOG_FORMAT_BASE As String = "${longdate}|${logger}|${level:uppercase=true}"
Private Const LOG_FORMAT_DEFAULT As String = LOG_FORMAT_BASE & " >> ${message}"
@@ -83,16 +105,12 @@ Public Class LogConfig
End Property
'''
- ''' Initializes a new Logger for a specific `Product`.
- '''
- ''' logPath configurations:
- ''' - AppData: writes to local application data directory
- ''' - CurrentDirectory: writes to `Log` directory relative to the current directory
- ''' - CustomPath: writes to custom path specified in `customLogPath`
+ ''' Initializes a new Logger for a specific `Product` and optinally a filename-suffix.
'''
''' The basepath to write logs to. Can be AppData, CurrentDirectory or CustomPath.
- ''' If `logPath` is set to custom, this defines the custom logPath
- Public Sub New(logPath As PathType, Optional customLogPath As String = Nothing)
+ ''' If `logPath` is set to custom, this defines the custom logPath.
+ ''' If set to anything other than Nothing, extends the logfile name with this suffix.
+ Public Sub New(logPath As PathType, Optional customLogPath As String = Nothing, Optional suffix As String = Nothing)
Dim productName As String = My.Application.Info.ProductName
Dim companyName As String = My.Application.Info.CompanyName
@@ -130,9 +148,17 @@ Public Class LogConfig
basePath = failSafePath
End Try
+ ' Set the suffix to the given string if it exists
+ Dim logFileSuffix As String = String.Empty
+
+ If suffix IsNot Nothing AndAlso suffix.Count > 0 Then
+ logFileSuffix = $"-{suffix}"
+ End If
+
' Create config object and initalize it
config = New LoggingConfiguration()
config.Variables("product") = productName
+ config.Variables("suffix") = logFileSuffix
' Add default targets
config.AddTarget(TARGET_DEFAULT_EX, GetDefaultLogTargetWithExceptions(basePath))
@@ -188,7 +214,6 @@ Public Class LogConfig
LogManager.ReconfigExistingLoggers()
End Sub
-
#Region "Log Targets"
Private Function GetDefaultLogTarget(basePath As String) As FileTarget
Dim defaultLog As New FileTarget() With {