Writes to a rolling text file.
A new file is used when the maxFileSize is reached, as well as a daily or weekly basis as specified by logFileCreationSchedule.
Each file has a name in the format "<baseFileName>(-)(-).log", with the local date included for daily and weekly rotation, and a sequence number appended if the file already exists.
Directory is determined by the location enumeration, and customLocation (if using a custom location).
Trace information is written to the file with Source, EventType, Id, and Message, separated by the specified delimiter.
If TraceData() is used, instead of TraceEvent(), then all Data items are written, each separated by the delimiter, instead of Message (the number of delimiters will vary based on the number of data items).
Depending on traceOutputOptions the Callstack, LogicalOperationStack, DateTime (UTC), ProcessId, ThreadId, and Timestamp are then written, separated by the delimiter. If the includeHostName option is set, then a final delimiter and the MachineName are also written.
For an alternative that allows a customised output format and alternative creation frequencies, see RollingFileTraceListener.
Attribute | Description |
---|---|
initalizeData | Ignored. |
traceOutputOptions | Appended to output, separated by the specified delimiter. |
baseFileName | Default is the application executable name. |
customLocation | Applies if location is Custom; default is Application.UserAppDataPath. |
delimiter | Default is tab delimited (in XML this is " "). |
encoding | Default is UTF8, but may use any named encoding supported by Encoding.GetEncoding(). |
logFileCreationSchedule | Rotates logs on daily or weekly basis by appending the date. |
Note: You may need to change the version number of Visual Basic based on the .NET version you are using.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sharedListeners>
<add name="filelog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
traceOutputOptions="DateTime,ProcessId,ThreadId"
customLocation="Logs"
location="Custom"
logFileCreationSchedule="Daily" />
</sharedListeners>
<sources>
<source name="ExampleSource" switchValue="All">
<listeners>
<clear />
<add name="filelog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Download the Complete package with examples and see the FileLog subfolder in the HelloLogging example.
<!-- Note: You may need to change the version number of Visual Basic based on the .NET version you are using. -->
<add name="filelog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
initalizeData=""
traceOutputOptions="Callstack,LogicalOperationStack,DateTime,ProcessId,ThreadId,Timestamp,"
append="true|false"
autoFlush="false|true"
baseFileName=""
customLocation=""
delimiter="	"
diskSpaceExhaustedBehavior="DiscardMessages|ThrowException"
encoding="UTF8|encoding name"
includeHostName="false|true"
location="LocalUserApplicationDirectory|TempDirectory|CommonApplicationDirectory|ExecutableDirectory|Custom"
logFileCreationSchedule="None|Daily|Weekly"
maxFileSize="5000000"
reserveDiskSpace="10000000"
/>