简体   繁体   English

如何使用java log4j将日志文件保存在逐月文件夹中?

[英]How to keep my log files in monthwise folder using java log4j?

I need to keep all my log4j log files in a separate month wise folder.for Instance consider this January month logs should be kept inside January folder,once February starts it should be created inside that February month folder and vice versa. 我需要将所有log4j日志文件保存在一个单独的月份明智的文件夹中。例如,实例考虑此一月月份的日志应保存在一月文件夹中,一旦二月开始,则应在该二月月份文件夹中创建日志,反之亦然。

Can anyone help me to achieve this.? 谁能帮我实现这一目标。

Thanks in Advance. 提前致谢。

Below is mylog 4j config: 以下是mylog 4j配置:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d
       {yyyy-MM-dd HH:mm:ss} %-5p %c %3x - %m%n
Log to file FILE
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=D:\logfile.log
log4j.appender.file.DatePattern='.'dd/MM/yyyy
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= %m%n

below are my java codes: 以下是我的Java代码:

final static Logger logger = Logger.getLogger(CarParser1.class);

public class CarParser1 {

final static Logger logger = Logger.getLogger(CarParser1.class);
static validatexml vxx=new validatexml();
static mailer mailobj=new mailer();
 DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
 Date date=new Date();


public String getHeader()
{
         logger.info("************************************
************************************
****************************************");
    logger.info("                                         
 CAR    VALIDATOR 
V1.1                                                       ");

    logger.info("       
                      By Software Team,    Thomson Digital,   
  India. 
                                                                  ");
       logger.info("***************************
********************************
*****************************************************");
     logger.info("\n\n");
    logger.info("\nExecution Date & Time :"+dateFormat.format(date));
        logger.info("********************************
*******************************************");  
return "";
}

----------- -----------


If you are using a linux machine you could use a shell script like this 如果您使用的是Linux机器,则可以使用这样的Shell脚本

MONTH=`date +%m`
YEAR=`date +%Y`
# Backup directory for logs
BKDIR="/logbackups/$YEAR/$MONTH"

#create directory
if [ ! -d "$BKDIR" ]; then
    mkdir -p $BKDIR
fi

find /path/to/logs/ -type f -mtime +30 -exec mv {} /logbackups/$YEAR /$MONTH/ \;

and write a cron job that will run once in a month 并编写将每月运行一次的Cron作业

0 0 1 * * /path/to/script

Log4j only supports daily rolling logging with "org.apache.log4j.DailyRollingFileAppender". Log4j仅支持使用“ org.apache.log4j.DailyRollingFileAppender”进行每日滚动日志记录。 You can use compromised methods such as the shell script or create a customized appender. 您可以使用受损的方法(例如shell脚本)或创建自定义的附加程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM