Log4j部分日志不输出到控制台

Enchanter, 2017-11-07 10:16:50
Log4j中,貌似只能通过配置文件去设置是否在控制台输出日志,可是这种设置是全局的。请问有没有什么方法能控制想输出在控制台的则在控制台输出,不想在控制台输出的仅存入文件?比如设置某些类的日志不输出在控制台,请问有这样的操作方法么?
...全文
1576 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Enchanter, 2017-11-10
  • 打赏
  • 举报
回复
引用 6 楼 l359122505 的回复:

http://blog.csdn.net/zmx729618/article/details/51260803
非常感谢你的回答,但是这个链接里的文章帮助不了我,我需要的是能自由选择哪些日志在控制台输出哪些仅输出到日志
Enchanter, 2017-11-10
  • 打赏
  • 举报
回复
引用 3 楼 BadMoree 的回复:
自己去实现 这时我之前写的,可以参考 public class AccessAppender extends FileAppender{ private String prefix; private boolean fileNameByThread; private String appenderType; private String datePattern; private String fileName; private String file; private int maxBackupIndex; private String maxFileSize; @Override public String getFile() { return file; } @Override public void setFile(String file) { this.file = file; } @Override public void append(LoggingEvent event) { AppenderMaker.get().append(event); } public int getMaxBackupIndex() { return maxBackupIndex; } public void setMaxBackupIndex(int maxBackupIndex) { this.maxBackupIndex = maxBackupIndex; } public String getMaxFileSize() { return maxFileSize; } public void setMaxFileSize(String maxFileSize) { this.maxFileSize = maxFileSize; } public String getDatePattern() { return datePattern; } public void setDatePattern(String datePattern) { System.out.println("初始化DatePattern : " + datePattern); this.datePattern = datePattern; } public String getAppenderType(){ return this.appenderType; } public void setAppenderType(String appenderType) { this.appenderType = appenderType; } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { System.out.println("初始化Prefix : " + prefix); this.prefix = prefix; } public boolean isFileNameByThread() { return fileNameByThread; } public void setFileNameByThread(boolean fileNameByThread) { System.out.println("初始化fileNameByThread : " + fileNameByThread); this.fileNameByThread = fileNameByThread; } public String getFileName() { return fileName; } public void setFileName(String fileName){ this.fileName = fileName; } }
这哪看的懂什么跟什么啊~还能和谐交流思想么
Enchanter, 2017-11-10
  • 打赏
  • 举报
回复
引用 4 楼 BadMoree 的回复:
按照这个思路,过滤掉你不想输出的类,就可以了
哥们,能不能帮忙给点注释啊,你这样的代码甩出来,我跟不上你的思路啊!!!
BadMoree 2017-11-07
  • 打赏
  • 举报
回复

private static final AccessAppender ACCESSAPPENDER = (AccessAppender) Logger.getLogger(Lang.class).getAppender("ThreadAppender");
	
	private static ThreadLocal<FileAppender> appenders = new ThreadLocal<>();

	private static FileAppender singleAppender = ACCESSAPPENDER.isFileNameByThread() ? AppenderFactory.getAppender(ACCESSAPPENDER) : null;
	
	
	
	/**
	 * 
	 * @return
	 */
	public static FileAppender get(){
		FileAppender fileAppender = null;
		if(ACCESSAPPENDER.isFileNameByThread()) {
			if(appenders.get() == null){
				initAppender();
			}
			fileAppender = appenders.get();
		} else {
			fileAppender = singleAppender;
		}
		return fileAppender;
	}

	private static void initAppender(){
		appenders.set(AppenderFactory.getAppender(ACCESSAPPENDER));
	}
BadMoree 2017-11-07
  • 打赏
  • 举报
回复
按照这个思路,过滤掉你不想输出的类,就可以了
BadMoree 2017-11-07
  • 打赏
  • 举报
回复
自己去实现 这时我之前写的,可以参考 public class AccessAppender extends FileAppender{ private String prefix; private boolean fileNameByThread; private String appenderType; private String datePattern; private String fileName; private String file; private int maxBackupIndex; private String maxFileSize; @Override public String getFile() { return file; } @Override public void setFile(String file) { this.file = file; } @Override public void append(LoggingEvent event) { AppenderMaker.get().append(event); } public int getMaxBackupIndex() { return maxBackupIndex; } public void setMaxBackupIndex(int maxBackupIndex) { this.maxBackupIndex = maxBackupIndex; } public String getMaxFileSize() { return maxFileSize; } public void setMaxFileSize(String maxFileSize) { this.maxFileSize = maxFileSize; } public String getDatePattern() { return datePattern; } public void setDatePattern(String datePattern) { System.out.println("初始化DatePattern : " + datePattern); this.datePattern = datePattern; } public String getAppenderType(){ return this.appenderType; } public void setAppenderType(String appenderType) { this.appenderType = appenderType; } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { System.out.println("初始化Prefix : " + prefix); this.prefix = prefix; } public boolean isFileNameByThread() { return fileNameByThread; } public void setFileNameByThread(boolean fileNameByThread) { System.out.println("初始化fileNameByThread : " + fileNameByThread); this.fileNameByThread = fileNameByThread; } public String getFileName() { return fileName; } public void setFileName(String fileName){ this.fileName = fileName; } }
  • 打赏
  • 举报
回复
log4j.properties配置: 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{yyy-MM-dd HH\:mm\:ss} %5p %c{1}\:%L - %m%n 
Enchanter, 2017-11-07
  • 打赏
  • 举报
回复
顶起来,不要沉~
繁华终归落尽 2017-11-07
  • 打赏
  • 举报
回复

http://blog.csdn.net/zmx729618/article/details/51260803

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧