logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Loren Keagle <Lo...@aps-technology.com>
Subject Re: Best Way to Set Up Massive Number of Loggers
Date Tue, 02 Dec 2008 07:19:47 GMT
This is the only way I know how to do this in log4net. We do this to 
handle remote logging from embedded controllers. We use .NET remoting 
appenders in this case, so we get the HostName property of each remote 
host logging to the sink. But if you're local you could do the same 
thing with a string filter or other property filter. This gives you 
individual layout control over each appender, and hence each log source.

If only log4net would add in a layout-ref tag so we wouldn't have to 
repeat ourselves 75 times...


<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%property{log4net:HostName} 
%d{MM/dd/yyyy HH:mm:ss.fff} [%p] %c{1}: %m%n" />
</layout>
</appender>

<appender name="Comp1" type="log4net.Appender.RollingFileAppender">
<file value="Comp1/Comp1.log" />
<staticLogFileName value="true" />
<filter type="log4net.Filter.PropertyFilter">
<Key value="log4net:HostName" />
<StringToMatch value="Comp1" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd’.log’" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{MM/dd/yyyy HH:mm:ss.fff} [%p] 
%c{1}: %m%n" />
</layout>
</appender>

<appender name="Comp2" type="log4net.Appender.RollingFileAppender">
<file value="Comp2/Comp2.log" />
<staticLogFileName value="true" />
<filter type="log4net.Filter.PropertyFilter">
<Key value="log4net:HostName" />
<StringToMatch value="Comp2" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{MM/dd/yyyy HH:mm:ss.fff} [%p] 
%c{1}: %m%n" />
</layout>
</appender>

<appender name="Comp3" type="log4net.Appender.RollingFileAppender">
<file value="Comp3/Comp3.log" />
<staticLogFileName value="true" />
<filter type="log4net.Filter.PropertyFilter">
<Key value="log4net:HostName" />
<StringToMatch value="Comp3" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{MM/dd/yyyy HH:mm:ss.fff} [%p] 
%c{1}: %m%n" />
</layout>
</appender>

...

<root>
<level value="ALL" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="Comp1" />
<appender-ref ref="Comp2" />
<appender-ref ref="Comp3" />
...
</root>
</log4net>

Eric Marthinsen wrote:
> Hi Walden-
>
> I like the grep idea. The motivation for the multiple log files is 
> twofold. First, they get really big really quickly. I realize I can 
> roll them on size, but it's nice to have a daily log file. Second, we 
> have some utilities that can take a log file and replay previous 
> transactions (we are logging a lot of data in custom formats). These 
> are still programmer tools (and QA).
>
> -Eric
>
>
> On Mon, Dec 1, 2008 at 7:39 PM, Walden H. Leverich 
> <WaldenL@techsoftinc.com <mailto:WaldenL@techsoftinc.com>> wrote:
>
>     Since you're asking for thoughts... bad idea. To me log4net is
>     plumbing, that is it's programmer based stuff. Sounds to me like
>     you're attempting to use it to satisfy a user requirement. I think
>     you'd be better off adding the logging as part of the business
>     processing. Now, having said that, there are still times when it's
>     nice to know which trading partner you're dealing with on a log
>     message. In that case I'd push the partner id into the NDC at the
>     start of the process, and pop it at the end. That way you'll have
>     it in the log (if you format it correctly). You'll have a single
>     log file, but you can always fgrep it. We do something similar
>     with several levels of NDC and can quickly come up with a
>     issue-specific logfile using grep.
>
>     -Walden
>
>     -- 
>
>     Walden H Leverich III
>
>     Tech Software
>
>     (516) 627-3800 x3051
>
>     WaldenL@TechSoftInc.com <mailto:WaldenL@TechSoftInc.com>
>
>     http://www.TechSoftInc.com <http://www.techsoftinc.com/>
>
>     Quiquid latine dictum sit altum viditur.
>
>     (Whatever is said in Latin seems profound.)
>
>     *From:* Eric Marthinsen [mailto:emarthinsen@agilecommerce.com
>     <mailto:emarthinsen@agilecommerce.com>]
>     *Sent:* Monday, December 01, 2008 7:31 PM
>     *To:* log4net-user@logging.apache.org
>     <mailto:log4net-user@logging.apache.org>
>     *Subject:* Best Way to Set Up Massive Number of Loggers
>
>     Hello-
>
>     I'm working on an app that coordinates data transfers among
>     multiple trading partners. I want to create a log file for each
>     trading partner. I had a few ideas of how to do this, but am not
>     sure which would be considered the optimal way. The expected
>     number of trading partners is likely to be around 100, but could
>     be higher. Here are my thoughts:
>
>     1. Add a bunch of named loggers to my log4net.config file
>     2. Do programmatic configuration of the loggers on application start
>     3. Write my own appender that is based on the RollingFileAppender
>
>     Do any of these scream out as being a good or bad solution? Is
>     there a better approach that I might be missing? Thanks in advance.
>
>     Regards,
>     Eric
>
>
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - http://www.avg.com 
> Version: 8.0.176 / Virus Database: 270.9.12/1822 - Release Date: 12/1/2008 8:23 AM
>
>   


Mime
View raw message