<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">This is because the logfile inside the container should not contain any actual log messages.  There is a pipe created at run-time that redirects log messages to stdout to be handled by docker, which is pretty standard practice.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> users <users-bounces@shibboleth.net> <b>On Behalf Of
</b>Mathew, Sunil via users<br>
<b>Sent:</b> Friday, January 13, 2023 2:12 AM<br>
<b>To:</b> Users@shibboleth.net<br>
<b>Cc:</b> Mathew, Sunil <smathew@hbs.edu><br>
<b>Subject:</b> Rolling file appender in docker image<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am writing logs to log file in the docker image. The issue is that the logback.xml in the docker image has FileAppender instead of RollingFileAppender (as is in the standard Shibboleth install) and so the file is growing in size inside
 the docker container without rolling over. Is there a reason why the docker image logback.xml is not using RollingFileAppender?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is the logback.xml in docker image:<o:p></o:p></p>
<p class="MsoNormal">    <!-- Process log. --><o:p></o:p></p>
<p class="MsoNormal">    <appender name="IDP_PROCESS" class="ch.qos.logback.core.FileAppender"><o:p></o:p></p>
<p class="MsoNormal">        <File>/tmp/logidp-process</File><o:p></o:p></p>
<p class="MsoNormal">        <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><o:p></o:p></p>
<p class="MsoNormal">            <charset>UTF-8</charset><o:p></o:p></p>
<p class="MsoNormal">            <Pattern>%date{ISO8601} - %mdc{idp.remote_addr} - %level [%logger:%line] - %msg%n%ex{short}</Pattern><o:p></o:p></p>
<p class="MsoNormal">        </encoder><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        <!-- Ignore Velocity status page error. --><o:p></o:p></p>
<p class="MsoNormal">        <filter class="ch.qos.logback.core.filter.EvaluatorFilter"><o:p></o:p></p>
<p class="MsoNormal">            <evaluator><o:p></o:p></p>
<p class="MsoNormal">                <matcher><o:p></o:p></p>
<p class="MsoNormal">                    <Name>VelocityStatusMatcher</Name><o:p></o:p></p>
<p class="MsoNormal">                    <regex>ResourceManager\s*: unable to find resource 'status\.vm' in any resource loader\.</regex><o:p></o:p></p>
<p class="MsoNormal">                </matcher><o:p></o:p></p>
<p class="MsoNormal">                <expression>VelocityStatusMatcher.matches(formattedMessage)</expression><o:p></o:p></p>
<p class="MsoNormal">            </evaluator><o:p></o:p></p>
<p class="MsoNormal">            <OnMatch>DENY</OnMatch><o:p></o:p></p>
<p class="MsoNormal">        </filter><o:p></o:p></p>
<p class="MsoNormal">    </appender><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is the logback.xml in Shibboleth install:<o:p></o:p></p>
<p class="MsoNormal">    <!-- Process log. --><o:p></o:p></p>
<p class="MsoNormal">    <appender name="IDP_PROCESS" class="ch.qos.logback.core.rolling.RollingFileAppender"><o:p></o:p></p>
<p class="MsoNormal">        <File>${idp.logfiles}/idp-process.log</File><o:p></o:p></p>
<p class="MsoNormal">        <o:p></o:p></p>
<p class="MsoNormal">        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><o:p></o:p></p>
<p class="MsoNormal">            <fileNamePattern>${idp.logfiles}/idp-process-%d{yyyy-MM-dd}.log.gz</fileNamePattern><o:p></o:p></p>
<p class="MsoNormal">            <maxHistory>${idp.loghistory}</maxHistory><o:p></o:p></p>
<p class="MsoNormal">        </rollingPolicy><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><o:p></o:p></p>
<p class="MsoNormal">            <charset>UTF-8</charset><o:p></o:p></p>
<p class="MsoNormal">            <Pattern>%date{ISO8601} - %mdc{idp.remote_addr} - %level [%logger:%line] - %msg%n%ex{short}</Pattern><o:p></o:p></p>
<p class="MsoNormal">        </encoder><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        <!-- Ignore Velocity status page error. --><o:p></o:p></p>
<p class="MsoNormal">        <filter class="ch.qos.logback.core.filter.EvaluatorFilter"><o:p></o:p></p>
<p class="MsoNormal">            <evaluator><o:p></o:p></p>
<p class="MsoNormal">                <matcher><o:p></o:p></p>
<p class="MsoNormal">                    <Name>VelocityStatusMatcher</Name><o:p></o:p></p>
<p class="MsoNormal">                    <regex>ResourceManager\s*: unable to find resource 'status\.vm' in any resource loader\.</regex><o:p></o:p></p>
<p class="MsoNormal">                </matcher><o:p></o:p></p>
<p class="MsoNormal">                <expression>VelocityStatusMatcher.matches(formattedMessage)</expression><o:p></o:p></p>
<p class="MsoNormal">            </evaluator><o:p></o:p></p>
<p class="MsoNormal">            <OnMatch>DENY</OnMatch><o:p></o:p></p>
<p class="MsoNormal">        </filter><o:p></o:p></p>
<p class="MsoNormal">    </appender><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<br>
Sunil<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>