2

I'm using the Microsoft Logging Application Block (version 5 beta 2) and I'm trying to dynamically set the file name of a log file to the year month and day (and then write a new log file every day). However, at runtime, the logger ignores any dynamic environment variables such as %date%, %time%, or %cd%. I can add static environment variables to the file name (such as %username%), but not dynamic environment variables. Does anyone know how to get the rolling flat file trace listener to dynamically set the date in the log file name?

(this is what I was setting the File Name as: Log_%date%.log)

pnuts
  • 58,317
  • 11
  • 87
  • 139
RobertC
  • 323
  • 1
  • 3
  • 12

2 Answers2

6

@Robertc, I know this question has been marked but I think I have a trick that you can use for your next project : Use your own environment variable!

E.g. Before you make any call to the Logging Block

Environment.SetEnvironmentVariable("MYDATE", "15/07/2010"); // << change the hardcoded date to get from DateTime
Debug.WriteLine (Environment.ExpandEnvironmentVariables(@"c:\Log\Log_%MYDATE%.log"));

In your app.config, in the appropriate Rolling flat file trace listener

FileName=Log_%MYDATE%.log

Note: This trick will only work if you restart your application daily.

Syd
  • 1,526
  • 1
  • 15
  • 16
2

I gave up on the Logging Application Block and switched to log4net. Log4net lets me set the name of the log to today's date with a web.config setting. I wrote an article on Code Project that shows how to get log4net working with the Policy Injection Application Block here

RobertC
  • 323
  • 1
  • 3
  • 12