log4j 文件大小分割_log4j怎样能生成日期分割的文件

展开全部

写一个log4jInit吧,,32313133353236313431303231363533e59b9ee7ad9431333361326334在你的log4j里面设置几个变量,例如${some_day_path},然后使用apache有个项目叫configuration来替换你的变量。

/**

* @Synopsis 读取多个log4j配置文件合并成一个。main-log4j.xml为主配置文件。只有主配置文件中的root与root appender

* 才生效。

*/

public class LoggingInit{

private static final String CONFIG_FILE_NAME_PATTERN = "^(?!log4j)[a-zA-Z0-9]+.xml";

private static final String LOG4J_FILE_NAME = "log4j.xml";

private static File config_file = null;

/**

* @Synopsis configure

* @Param File _file

* @Return

*/

public static void init(){

LoggingInit init = new LoggingInit();

File file = init.combined();

config_file = init.modulate( file );

DOMConfigurator.configure( config_file.getPath() );

}

/**

* @Synopsis getConfigFile

* @Return

*/

public static File getConfigFile(){

return config_file;

}

/**

* @Synopsis replace path variables

*/

class RealPath extends StrLookup{

@Override

public String lookup( String _key ){

if( _key.trim().equals( "log_dir" ) ){

return Path.singleInstance().getLogPath();

}

return "not-found";

}

}

/**

* @Synopsis combined

* @Return

*/

public File combined(){

File out = new File( Path.singleInstance().getLogConfPath() + File.separator + LOG4J_FILE_NAME );

try{

NodeCombiner node_combiner = new MergeCombiner();

node_combiner.addListNode( "log4j:configuration" );

CombinedConfiguration combined = new CombinedConfiguration( node_combiner );

File dir = new File( Path.singleInstance().getLogConfPath() );

IOFileFilter file_filter = new RegexFileFilter( CONFIG_FILE_NAME_PATTERN );

IOFileFilter directory_filter = TrueFileFilter.INSTANCE;

Collection< File > files = FileUtils.listFiles( dir, file_filter, directory_filter );

for( File f : files ){

XMLConfiguration c = new XMLConfiguration( f );

combined.addConfiguration( c );

}

XMLConfiguration configuration = new XMLConfiguration( combined );

configuration.setPublicID( "-//log4j/log4j Configuration//EN" );

configuration.setSystemID( "log4j.dtd" );

configuration.setRootElementName( "log4j:configuration" );

ConfigurationInterpolator interpolator = configuration.getInterpolator();

interpolator.registerLookup( "path", new RealPath() );(按你的规则替换成你的日志路劲)

XMLConfiguration rs = ( XMLConfiguration ) configuration.interpolatedConfiguration();

rs.save( out );

}catch( ConfigurationException e ){

throw new InitException( "combined exection", e );

}

return out;

}

/**

* @Synopsis modulate

* @Param File _file

* @Return

*/

public File modulate( File _file ){

try{

SAXReader reader = new SAXReader();

Document dom = reader.read( _file );

Element configuration = ( Element ) dom.selectSingleNode( "/configuration" );

List appender_list = configuration.selectNodes( "appender" );

List logger_list = configuration.selectNodes( "logger" );

Node root = configuration.selectSingleNode( "root" );

List< Element > elements = configuration.elements();

elements.clear();

for( Object object : appender_list ){

elements.add( ( Element ) object );

}

for( Object object : logger_list ){

elements.add( ( Element ) object );

}

elements.add( ( Element ) root );

OutputFormat format = OutputFormat.createPrettyPrint();

format.setIndentSize( 4 );

XMLWriter writer = new XMLWriter( new FileOutputStream( _file ), format );

writer.write( dom );

writer.close();

}catch( DocumentException e ){

throw new InitException( "fromat exception", e );

}catch( FileNotFoundException e ){

throw new InitException( "fromat exception", e );

}catch( UnsupportedEncodingException e ){

throw new InitException( "fromat exception", e );

}catch( IOException e ){

throw new InitException( "fromat exception", e );

}

return _file;

}

}

本回答由网友推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值