Increase your computers local time by 24 hours and observe. If I'm not wrong
you'll see that the "20130726_6600_" part won't change because it is
evaluated only once in the appenders lifetime.

 

Dominik

 

Von: Howe, Peter L [mailto:[email protected]] 
Gesendet: Freitag, 26. Juli 2013 15:38
An: Log4NET Dev
Betreff: RE: File naming

 

 

I'm almost there, but I don't know enough about the code to see if it would
roll properly.  With this configuration:

 

     <file type="log4net.Util.PatternString" 

           value="C:\temp\logs\%date{yyyyMMdd}_%processid_" />  

 

      <staticLogFileName value="false"/>

      <appendToFile value="true"/>

      <rollingStyle value="Date"/>

 

      <datePattern value="dd'_MyApplication.log'"/>     

 

I get files that are named like:

 

20130726_6600_26_MyApplication.log

20130726_6744_26_MyApplication.log

etc.

 

I had to leave the "dd" in the datePattern so it had something to roll on,
but I have not tried running the test application overnight to see what
really happens at midnight.

 

Peter

 

 

 

 

 

From: Dominik Psenner [mailto:[email protected]] 
Sent: Thursday, July 25, 2013 2:23 AM
To: 'Log4NET Dev'
Subject: AW: File naming

 

You found a workaround. Interesting. :) However, you won't get the date as a
prefix for %processid. I'm posting the code responsible for calculating the
filename in the RollingFileAppender which should explain why what's the
case:

 

--- QUOTE ---

protected string GetNextOutputFileName(string fileName)

{

                if (!m_staticLogFileName) 

                {

                               fileName = fileName.Trim();

                               if (m_rollDate)

                               {

fileName = CombinePath(fileName, m_now.ToString(m_datePattern,
System.Globalization.DateTimeFormatInfo.InvariantInfo));

                               }

 

                               if (m_countDirection >= 0) 

                               {

fileName = CombinePath(fileName, "." + m_curSizeRollBackups);

                                }

                }

                return fileName;

}

--- /QUOTE ---

 

where CombinePath behaves like this:

 

--- QUOTE ---

        private string CombinePath(string path1, string path2)

        {

            string extension = Path.GetExtension(path1);

            if (m_preserveLogFileNameExtension && extension.Length > 0)

            {

                return Path.Combine(Path.GetDirectoryName(path1),
Path.GetFileNameWithoutExtension(path1) + path2 + extension);

            }

            else

            {

                return path1 + path2;

            }

        }

--- /QUOTE ---

 

Therefore there are various restrictions involved with how and where the
date can be put into the filename.

 

Currently there's no way of changing this since any way to improve this
would require to change the public API (the way the RFA is configured) and
thus we will try to fix that filename trouble once and for all with the
rewrite of the RollingFileAppender. I can imagine that there won't be a
<datePattern> configuration anymore, but everything will be put into the
<file> tag where one will be able to use something like %date{format}. At
least that's what I believe would be the best since that allows people to
put the date portion into directory names which was often requested but so
far has been impossible to do. And that way we allow even fancier stuff to
happen in the <file> tag. :) Even though this will complicate the rolling
significantly and there are a lot of cases that need to be taken care of.

 

Cheers

The information contained in this message may be privileged, confidential
and protected from disclosure. If the reader of this message is not the
intended recipient, or an employee or agent responsible for delivering this
message to the intended recipient, you are hereby notified that any
dissemination, distribution or copying of this communication is strictly
prohibited. If you have received this communication in error, please notify
your representative immediately and delete this message from your computer.
Thank you.

Reply via email to