spring cloud 1.4 以上版本不再支持log4j,而是支持其升级版log4j2

spring cloud 1.4 以上版本不支持 log4j , 而替代 log4j 的是 log4j2, 虽然log4j2在性能方面快了将近10倍,但是log4j2不再支持log4j.properties

故如果spring cloud如果由1.3升级的话去配置中心取配置文件要注意了

 

例子1.3版本的:

 

 pom.xml 新加内容

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

 

 

application.properties

logging.level.com.bugyun=DEBUG

 

 

log4j.properties

# LOG4J配置
log4j.rootCategory=INFO, stdout, file, errorfile
log4j.category.com.bugyun=${logging.level.com.bugyun}, bugyunfile
log4j.logger.error=errorfile

# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# root日志输出
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=logs/all.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# error日志输出
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=logs/error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# com.bugyun下的日志输出
log4j.appender.bugyunfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.bugyunfile.file=logs/my.log
log4j.appender.bugyunfile.DatePattern='.'yyyy-MM-dd
log4j.appender.bugyunfile.layout=org.apache.log4j.PatternLayout
log4j.appender.bugyunfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n

 

 

 例子1.4版本

pom.xml 新加内容

		<!-- log4j依赖包 begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<!-- spring boot 1.3.5.RELEASE使用log4j,
					在spring boot 1.4的版本中,就需要使用log4j2,否则会出现如下错误:
					Project build error: 'dependencies.dependency.version' for org.springframework.boot:spring-boot-starter-log4j:jar is missing. 
			<artifactId>spring-boot-starter-log4j2</artifactId>
			-->
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>
		<!-- 单元测试包 begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency> 
		<!-- 单元测试包 end -->
		<!-- log4j依赖包 end -->

 

application.properties

logging.config=classpath:log4j2.xml 

 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出 -->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数 -->
<configuration status="WARN">
	<!--先定义所有的appender -->
	<appenders>
		<!--这个输出控制台的配置 -->
		<console name="Console" target="SYSTEM_OUT">
			<!--输出日志的格式 -->
			<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
			<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
		</console>
		
		<!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
		<RollingFile name="RollingFileInfo" fileName="logs/info.log"
			filePattern="logs/info-%d{yyyy-MM-dd-HH-mm}-%i.log">
			<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
			<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
			<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
			<Policies>
				<TimeBasedTriggeringPolicy />
				<SizeBasedTriggeringPolicy size="100 MB" />
			</Policies>
		</RollingFile>
		
		
		<RollingFile name="RollingFileError" fileName="logs/error.log"
			filePattern="logs/error-%d{yyyy-MM-dd-HH-mm}-%i.log">
			<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
			<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n" />
			<Policies>
				<TimeBasedTriggeringPolicy />
				<SizeBasedTriggeringPolicy size="100 MB" />
			</Policies>
		</RollingFile>
	</appenders>
	
	<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
	<loggers>
		<root level="all">
			<appender-ref ref="Console" />
			<appender-ref ref="RollingFileInfo" />
			<appender-ref ref="RollingFileError" />
		</root>
	</loggers>
</configuration>

 

 

例子1.4如果用到配置中心

application.properties 里的 

 

logging.config=classpath:log4j2.xml 
  迁移到配置中心配置文件里,同时log4j2.xml文件以及留在旧的工程里

猜你喜欢

转载自bugyun.iteye.com/blog/2365269
今日推荐