Create a sliding flat log file using the corporate library

In my web application, I am trying to create a log file to record errors and exceptions, but when I run my application, the log file is not created in my solution folder or in the bin folder.

I used the following code. Please help me. I am stuck with this problem, thanks in advance.

usable namespaces

using Microsoft.Practices.EnterpriseLibrary.Logging; using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; 

.cs file

  public int GetdeskKMasterRecordsCount(string CircleId, string StoreId) { try { throw new Exception("this is normal exception"); } catch (Exception ex) { BindLog(ex); return 0; } } public static void BindLog(Exception ex) { if (ex == null) return; Logger.Write(LogInformation(1, DateTime.Now, ex.Message, " ")); } public static LogEntry LogInformation(int eventId, DateTime timeStamp, string message, string documentName) { LogEntry logEntryObject = new LogEntry(); logEntryObject.EventId = eventId; logEntryObject.Title = documentName; logEntryObject.TimeStamp = timeStamp; logEntryObject.MachineName = System.Environment.MachineName; logEntryObject.Message = message; logEntryObject.Categories.Add("Exception"); return logEntryObject; } 

Web configuration file

 <configSections> <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <section name="recordingWindowGroup" type="Vodafone.DMS.BAL.WindowConfigurationHandler, Vodafone.DMS.BAL"/> <section name="defaultParamGroup" type="Vodafone.DMS.BAL.DefaultParamConfiguration, Vodafone.DMS.BAL"/> <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </configSections> <loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"> <listeners> <add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" fileName="Vodafone.DMS.log.exclude" footer="---------------------------" formatter="Text Formatter" header="---------------------------" rollFileExistsBehavior="Increment" rollSizeKB="10" timeStampPattern="yyyy-MM-dd hh:mm:ss" maxArchivedFiles="7" traceOutputOptions="Timestamp, Callstack" filter="All"/> </listeners> <formatters> <add template="Timestamp: {timestamp}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;EventId: {eventid}&#xA;Severity: {severity}&#xA;Title:{title}&#xA;Machine: {machine}&#xA;Application Domain: {appDomain}&#xA;Process Id: {processId}&#xA;Process Name: {processName}&#xA;Win32 Thread Id: {win32ThreadId}&#xA;Thread Name: {threadName}&#xA;" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="Text Formatter"/> </formatters> <categorySources> <add switchValue="All" name="General"> <listeners> <add name="Rolling Flat File Trace Listener"/> </listeners> </add> </categorySources> <specialSources> <allEvents switchValue="All" name="All Events"> <listeners> <add name="Rolling Flat File Trace Listener"/> </listeners> </allEvents> <notProcessed switchValue="All" name="Unprocessed Category"> <listeners> <add name="Rolling Flat File Trace Listener"/> </listeners> </notProcessed> <errors switchValue="All" name="Logging Errors &amp; Warnings"> <listeners> <add name="Rolling Flat File Trace Listener"/> </listeners> </errors> </specialSources> </loggingConfiguration> 
+6
source share
3 answers

For the corporate library version 5.0 and above , Microsoft has released a corporate library configuration tool that allows you to visually change configurations in the configuration file . You can also install this tool from NuGet and access it from inside the visual studio Tools >> Library Package Manager >> Manage NuGet Packages for solution and add the corresponding EntLib Application Block . You can find the manual from here .

Using this tool, I created a configuration file that looks like this:

Put this in a Web.Config or App.Config file

  <loggingConfiguration name="loggingConfiguration" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"> <listeners> <add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" fileName="RollingFlatFile.log" footer="---------------------------" formatter="Text Formatter" header="---------------------------" rollFileExistsBehavior="Increment" rollInterval="Week" rollSizeKB="20000" timeStampPattern="yyyy-MM-dd hh:mm:ss" maxArchivedFiles="7" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack" filter="All" /> </listeners> <formatters> <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Timestamp: {timestamp}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;EventId: {eventid}&#xA;Severity: {severity}&#xA;Title:{title}&#xA;Machine: {machine}&#xA;Application Domain: {appDomain}&#xA;Process Id: {processId}&#xA;Process Name: {processName}&#xA;Win32 Thread Id: {win32ThreadId}&#xA;Thread Name: {threadName}&#xA;" name="Text Formatter" /> </formatters> <categorySources> <add switchValue="All" name="General"> <listeners> <add name="Rolling Flat File Trace Listener" /> </listeners> </add> </categorySources> <specialSources> <allEvents switchValue="All" name="All Events"> <listeners> <add name="Rolling Flat File Trace Listener" /> </listeners> </allEvents> <notProcessed switchValue="All" name="Unprocessed Category"> <listeners> <add name="Rolling Flat File Trace Listener" /> </listeners> </notProcessed> <errors switchValue="All" name="Logging Errors &amp; Warnings"> <listeners> <add name="Rolling Flat File Trace Listener" /> </listeners> </errors> </specialSources> </loggingConfiguration> 

I would recommend that instead of creating a log file in the bin directory of the application, specify the physical location by changing the value of fileName="RollingFlatFile.log" to something like fileName="c:\logs\RollingFlatFile.log"

+4
source

You need to set the category in your LogEntry so that it matches the source of the category in the configuration file ("General" in the configuration you published). I also suggest looking at the block of exception handling applications if you plan to register exceptions, instead of writing code to create LogEntry yourself.

0
source
 IConfigurationSource configurationSource = ConfigurationSourceFactory.Create(); LogWriterFactory logWriterFactory = new LogWriterFactory(configurationSource); Logger.SetLogWriter(logWriterFactory.Create(), false); Logger.Write("btnStartProcess_Click"); Logger.Reset(); 
-2
source

Source: https://habr.com/ru/post/946076/


All Articles