天天看點

編譯安裝Cronolog輪轉Apache和Tomcat日志

        cronolog 是一款日志輪詢(rotation)工具,可以用它來把Apache, Tomcat, Nginx等WEB伺服器的輸出日志切分按日或者按月儲存。cronolog 從标準輸入中讀取日志内容,然後把他們寫到按指定格式命名的日志檔案中。當日期改變後, cronolog會把之前的日志檔案關閉,再打開一個包含新日期的日志檔案。利用cronolog可以完美的解決web伺服器日志檔案不斷增大,且不能在運作時删除的問題。

cronolog特點:

        cronolog 特點cronolog可以按月、日甚至按小時進行日志輪詢,也可以配置每個日志檔案的最大值,當檔案大小達到這個最大值時,自動記錄到下一個日志檔案中。

        cronolog穩定版本為 1.6.2,但此版本有一個弊端:當日志檔案的大小到2G(2150726147位元組)時,cronolog程序就變成僵屍程序,即日志無法再寫入,cronolog 1.7 版本解決了這個問題。

下載下傳

<code>cronolog-1.7.0-beta.tar.gz</code>

安裝

<code># tar zxvf cronolog-1.7.0-beta.tar.gz</code>

<code># cd cronolog-1.7.0</code>

<code># ./configure --prefix=/usr/local/cronolog</code>

<code># make</code>

<code># make install</code>

如果不指定--prefix路徑,cronolog預設安裝在/usr/local/sbin/cronolog

修改Apache虛拟主機配置

編輯httpd.conf檔案,将其中的

<code>[root@localhost~]#vim/etc/httpd/httpd.conf</code>

将預設日志:

<code>CustomLog "logs/access_log"combined</code>

修改為:

<code>CustomLog </code><code>"| /usr/local/sbin/cronolog  /logs/www/access_%Y%m%d.log"</code> <code>combined</code>

其中%Y%m%d為日志檔案分割方式,即為“年月日”。

關鍵點在于: 被輪詢的日志一定要是絕對路徑,不能是相對路徑。

老男孩學習筆記:

<a href="https://s4.51cto.com/oss/201710/27/0691aa1fa296bfd644e23a8aad7710bc.jpg-wh_500x0-wm_3-wmp_4-s_2979902112.jpg" target="_blank"></a>

<a href="https://s5.51cto.com/oss/201710/27/30f4d22d6d57a221200c8b21af91c834.jpg-wh_500x0-wm_3-wmp_4-s_820911596.jpg" target="_blank"></a>

修改Tomcat配置

修改tomcat的bin目錄下的catalina.sh

<code># vim /usr/local/tomcat/bin/catalina.sh</code>

找到如下代碼

<code>CATALINA_OUT=</code><code>"$CATALINA_BASE"</code><code>/logs/catalina</code><code>.out</code>

<code>touch</code> <code>"$CATALINA_OUT"</code>

<code> </code><code>if</code> <code>[ </code><code>"$1"</code> <code>= </code><code>"-security"</code> <code>] ; </code><code>then</code>

<code>    </code><code>if</code> <code>[ $have_tty -</code><code>eq</code> <code>1 ]; </code><code>then</code>

<code>      </code><code>echo</code> <code>"Using Security Manager"</code>

<code>    </code><code>fi</code>

<code>    </code><code>shift</code>

<code>    </code><code>"$_RUNJAVA"</code> <code>"$LOGGING_CONFIG"</code> <code>$LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \</code>

<code>      </code><code>-Djava.endorsed.</code><code>dirs</code><code>=</code><code>"$JAVA_ENDORSED_DIRS"</code> <code>-classpath </code><code>"$CLASSPATH"</code> <code>\</code>

<code>      </code><code>-Djava.security.manager \</code>

<code>      </code><code>-Djava.security.policy==</code><code>"$CATALINA_BASE"</code><code>/conf/catalina</code><code>.policy \</code>

<code>      </code><code>-Dcatalina.base=</code><code>"$CATALINA_BASE"</code> <code>\</code>

<code>      </code><code>-Dcatalina.home=</code><code>"$CATALINA_HOME"</code> <code>\</code>

<code>      </code><code>-Djava.io.tmpdir=</code><code>"$CATALINA_TMPDIR"</code> <code>\</code>

<code>      </code><code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start \</code>

<code>      </code><code>&gt;&gt; </code><code>"$CATALINA_OUT"</code> <code>2&gt;&amp;1 &amp;</code>

<code>  </code><code>else</code>

<code>  </code><code>fi</code>

将上面CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out修改為:

<code>CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out</code>

将最上面的touch “$CATALINA_OUT”注釋掉如下

<code>#touch "$CATALINA_OUT"</code>

将下面兩處

<code>org.apache.catalina.startup.Bootstrap "$@" start \</code>

<code>&gt;&gt; "$CATALINA_OUT" 2&gt;&amp;1 &amp;</code>

修改為

<code>      </code><code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start 2&gt;&amp;1 \</code>

<code>       </code><code>| </code><code>/usr/local/sbin/cronolog</code> <code>"$CATALINA_OUT"</code> <code>&gt;&gt; </code><code>/dev/null</code> <code>2&gt;&amp;1 &amp;</code>

<code>     </code><code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start 2&gt;&amp;1 \</code>

<code>        </code><code>| </code><code>/usr/local/cronolog/sbin/cronolog</code> <code>"$CATALINA_BASE"</code><code>/logs/catalina</code><code>.%Y-%m-%d.out &gt;&gt; </code><code>/dev/null</code> <code>&amp;</code>

然後重新開機tomcat即可

      本文轉自ling118 51CTO部落格,原文連結:http://blog.51cto.com/meiling/1976745,如需轉載請自行聯系原作者