2011-01-07 12 views
6

Geçerli tarihi log4j günlük dosyasına eklemeye çalışıyorum. Yani böyle bir şey olurdu:Log4j'de tarih içeren bir dosya adı

myApp-2011-01-07.log

şey DailyRollingFileAppender kullanmak istiyorum kalmamasıdır. Nedeni, günlükleri her gün yedekler klasöründe yedekleyecek başka bir betik olacak olmasıdır. Bu, Tomcat5.5 altında çalışıyor.

Bu log4j'de mümkün mü? appender günlük dosya adını belirtirken

static{ 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    System.setProperty("current.date", dateFormat.format(new Date())); 
} 

Sonra log4j.xml dosyasında sistem özelliğini kullanabilirsiniz:

+0

Maalesef yeni tarihe dönmesini istemiyor musunuz? O zaman gece yarısı ne olur? –

cevap

13

Ben sadece geçerli tarih içerecek kodda bir sistem özelliğini ayarlayın düşünüyorum :

<appender name="MYAPPENDER" class="org.apache.log4j.FileAppender"> 
    <param name="File" value="${user.home}/myApp-${current.date}.log" /> 

ETA: Şimdi düşünüyorum da kurulum için log4j yapılandırılmış özelliği ayarlanmış olduğundan emin olmak için statik bir başlatıcı kullanılarak sistem özelliğine sahip olabilir. senin log4j.properties dosyasında bu ayarı

+0

Yeni tarih ve gün için yeni bir dosya oluşturacak mı? ya da sadece bir kez mi yaratacak? – Steve

+0

Log4j'ye baktığımdan beri biraz zaman geçti ama verdiğim örnek, işleminizi başlattığınız gün için sadece bir günlük dosyası oluşturacaktır. Her gün yeni bir günlük dosyası istiyorsanız, log4j.xml'inizde bir "RollingFileAppender" kullanın. – BenjaminLinus

+0

bunu deneyeceğim, cevap verdiğiniz için teşekkür ederim .. – Steve

5

Dene:

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.R.File=example.log 

çok daha bilgi burada http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html

+0

Eğer günlüğümü gece yarısında dönecek şekilde ayarlarsam, eski günlük dosyalarına ne olur? Her günlük dosyasında bir dosya tarih damgası vardır, bu yüzden dizinde aylarca olacak günlük dosyaları olacak endişeleniyorum. – Sun

9

hızlı bu yönetmek ve sadece kendi Appender oluşturarak son derece mantainable olabilir bulunabilir.

import java.text.SimpleDateFormat; 
    import java.util.Date; 
    import org.apache.log4j.FileAppender; 

    public class CustomFileAppender extends FileAppender{ 

    @Override 
    public void setFile(String fileName) 
    { 
     if (fileName.indexOf("%timestamp") >= 0) { 
      Date d = new Date(); 
      SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSS"); 
      fileName = fileName.replaceAll("%timestamp", format.format(d)); 
     } 
     super.setFile(fileName); 
    } 
} 

ve özelliklerinde bu yerleştirin::

Sadece böyle bir Class oluşturmak

log4j.appender.file=com.portima.filenet.brio.ops.tools.CustomFileAppender 
    log4j.appender.file.File=${log}/general.%timestamp.log 

Artık istediğiniz dosya her türlü verebilir.