[logback-user] Jetty: How to get multiple web applications log to a common log file

Gaurav Kumar gaurav419 at gmail.com
Sun Nov 4 20:12:19 CET 2012


Hi Amot,
My question was very specific to Jetty, and the jars in discussion are the
logback jars, which when placed in jetty/lib/etc is also picked by jetty
during its startup (I dont want jetty to pick it during its startup but
would want the webapps to see it). So this is posted here.
My intent was to place these jars at a common location in Jetty and let the
web containers be aware of it.


On Mon, Nov 5, 2012 at 12:37 AM, Amit Mohan <amit.mohan at teamaol.com> wrote:

>  This question should belong to Java threads rather than logback. Anyways,
> try tomcat.properties -> common.dir
>
> -Amot
>
> On 11/4/2012 2:04 PM, Gaurav Kumar wrote:
>
> Any recommendations on where to place common jars used by all web
> applications in webapps dir but which will not be picked by jetty during
> its startup? also how to set this classpath in the web container?
> Any help will be really appreciated.
>
>
>
> On Thu, Nov 1, 2012 at 3:24 AM, gaurav419 at gmail.com <gaurav419 at gmail.com>wrote:
>
>>  What do you suggest would be a good location to place these jars in
>> Jetty? I tried to put them into jetty/lib/etc but then jetty loads it up
>> during jetty startup and creates other unwanted side effects. Is there a
>> good place to locate these jars so jetty doesnt load them at its startup
>> and only the wars from webapps location could pick them?
>>
>>
>>
>> Ralph Goers wrote:
>>
>>  With each application having its own copy of slf4j and logback you are
>> making it so each web app will have to have its own appenders writing to
>> the file.  While Logback supports using prudent mode for this, I don't
>> recommend it.  Instead, I would suggest that you move logback and slf4j out
>> of the web apps an add them to a common classpath and then have them share
>> the logging configuration. With that you should have no problem having
>> multiple web apps write to the same file.
>>
>>
>>  On Oct 31, 2012, at 5:56 AM, Gaurav Kumar wrote:
>>
>>  any suggestions will be really appreciated. I am totally stuck on this.
>>
>>
>> On Tue, Oct 30, 2012 at 11:39 PM, Gaurav Kumar <gaurav419 at gmail.com>wrote:
>>
>>> Hi,
>>>
>>> [Please ignore the previous email with the same subject line. That was
>>> accidentally posted.]
>>>
>>>
>>>  I am using Jetty webserver and logback for logging.
>>>
>>>
>>> I have a scenario with multiple Web Applications (so multiple wars into
>>> jetty/webapps dir). Each war has its own copy of logback-classic,
>>> logback-core and slf4j-api. There is a common copy of logback.xml in
>>> jetty/resources (pasted below). My intent is to maintain a logfile named
>>> "testapp.<date>.log" which should be used by all the wars for logging.
>>> Further, I want a rollover of this file on every startup. I am able to
>>> achieve this except that each war is trying to create its own version of
>>> the log file so when each war is loaded it creates its own logfile
>>> archiving the earlier logfile created by the earlier war. This continues
>>> till all wars are loaded thus creating these many log files per startup.
>>> The archived files are are named "testapp.<date>.log.<time in millisec>.
>>>
>>> Is there a way to ask all wars to log into the same file?
>>>
>>>
>>>  *logback.xml file content:*
>>>  *<configuration>
>>>   <timestamp key="dateStr" datePattern="yyyy-MM-dd"
>>> timeReference="contextBirth"/>-->
>>>   <timestamp key="timeStr" datePattern="HHmmssSSS"
>>> timeReference="contextBirth"/>-->
>>>
>>>   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
>>>     <encoder>
>>>        <pattern>%date{MMM dd}, %date{yyyy hh:mm:ss a} %class
>>> %method\(\):%line %n%level: %message%n </pattern>
>>>     </encoder>
>>>   </appender>
>>>
>>>   <appender name="FILE"
>>> class="ch.qos.logback.core.rolling.RollingFileAppender">
>>> *
>>> *     <file>${jetty.home}/logs/testapp.${dateStr}.log</file>
>>>
>>>
>>>     <rollingPolicy
>>> class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
>>>       <!-- daily rollover -->
>>>
>>> <fileNamePattern>${jetty.home}/logs/testapp.%d{yyyy-MM-dd}.log.${timeStr}</fileNamePattern>
>>>
>>>
>>>
>>>       <!-- keep max 30 rolled over files -->
>>>       <maxHistory>30</maxHistory>
>>>       <cleanHistoryOnStart>true</cleanHistoryOnStart>
>>>
>>>        <!-- trigger for daily rollover and every server restart -->
>>>       <timeBasedFileNamingAndTriggeringPolicy class="utils.
>>> LogbackLogTriggeringPolicy"/>
>>>
>>>     </rollingPolicy>
>>>
>>>     <encoder>
>>>         <pattern>%date{MMM dd}, %date{yyyy hh:mm:ss a} %class
>>> %method\(\):%line %n%level: %message%n </pattern>
>>>     </encoder>
>>>   </appender>
>>>
>>>   <root level="INFO">
>>>     <appender-ref ref="FILE" />
>>>   </root>
>>> </configuration>
>>> *
>>>
>>>
>>>  *LogbackLogTriggeringPolicy.java is:*
>>> *@NoAutoStart
>>> public class LogbackLogTriggeringPolicy<E> extends
>>> DefaultTimeBasedFileNamingAndTriggeringPolicy<E> {
>>>   @Override
>>>       public void start() {
>>>           super.start();
>>>           nextCheck = 0L;
>>> *
>>> *           isTriggeringEvent(null, null);
>>>           try {
>>>               tbrp.rollover();
>>>           } catch (RolloverFailure e) {
>>>               //Do nothing
>>>           }
>>>       }
>>> }
>>> *
>>>
>>>  Thanks.
>>>
>>>
>>  _______________________________________________
>> Logback-user mailing list
>> Logback-user at qos.ch
>> http://mailman.qos.ch/mailman/listinfo/logback-user
>>
>>
>>
>
>
> _______________________________________________
> Logback-user mailing listLogback-user at qos.chhttp://mailman.qos.ch/mailman/listinfo/logback-user
>
>
>
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/logback-user/attachments/20121105/5093db19/attachment.html>


More information about the Logback-user mailing list