sfl4j 如何配置???

菜鸟刘 发布于 2017/09/27 10:59
阅读 183
收藏 0

maven 依赖已添加

src下也配置了。


public static Logger logger = LoggerFactory.getLogger(Test.class);
 

运行测试代码还报错。。。。

加载中
0
kakai
kakai

我用logback+slf4j,slf4j无需配置,只需配置logback就可以了

菜鸟刘
菜鸟刘
哎,还是没说到重点,没法解决问题
0
jalena
jalena

mvn的包代码发出来看看撒。

0
jalena
jalena

MVN只需要导入这个就可以了

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-slf4j-impl</artifactId>
	<version>2.9.1</version>
</dependency>

log4j2.xml 

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="off" status="INFO"> <!-- 这个status是控制系统信息的输出级别 -->
	<Properties>
		<Property name="path">${log4j:configParentLocation}/../../logs</Property>
		<Property name="pattern" value="%d{DEFAULT} [%-5level] %c{1.}.%M()/%L - %msg%xEx%n"/>
	</Properties>

	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">	<!-- 将日志信息从控制台输出 -->
			<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
			<PatternLayout pattern="%highlight{${pattern}}" />
		</Console>

		<File name="debug" fileName="${path}/log.log" append="true">	<!-- 将日志信息写入日志文件 -->
			<Filters>
				<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
				<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
			</Filters>
			<PatternLayout pattern="${pattern}" />
		</File>

		<RollingFile name="warn" fileName="${path}/warn.log" filePattern="${path}/warn-%d{yyyy-MM-dd}_%i.log">
			<PatternLayout pattern="${pattern}" />
			<SizeBasedTriggeringPolicy size="50MB" />
			<Filters>
				<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
				<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" />
			</Filters>
		</RollingFile>
	</Appenders>

	<Loggers>
		<Logger name="TestWebService" level="TRACE"/>
		<Root level="debug">
			<AppenderRef ref="Console" />   <!-- 仅有上述的Appenders配置还不够,这里还不能少,少了就不会在控制台输出 -->
			<AppenderRef ref="warn" />
			<AppenderRef ref="debug" />  <!-- 仅有上述的Appenders配置还不够,这里还不能少,少了就不会写入文件,但会创建文件 -->
		</Root>
	</Loggers>

</configuration>

测试代码

import fnklAxiService.FnklAxiServiceServiceLocator;
import fnklAxiService.FnklAxiService_PortType;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.xml.rpc.ServiceException;
import java.rmi.RemoteException;


/**
 * @author Jalena
 * @version 1.0
 */
public class TestWebService {

	private final Logger logger = LoggerFactory.getLogger(getClass());
	private FnklAxiService_PortType service;

	@Before
	public void before() {
		FnklAxiServiceServiceLocator locator = new FnklAxiServiceServiceLocator();
		try {
			service = locator.getfnklAxiService();
		} catch (ServiceException e) {
			logger.warn(e.getCause().getMessage());
		}
	}

	@Test
	public void selectRacks() throws ServiceException, RemoteException {
		String s = service.selectRacks("3181804100059#100");
		logger.info(s);
	}

}

 

0
polly
polly
slf4j本身的依赖呢
0
Kit_lee
Kit_lee

从来都不是依赖和配置的问题,是你运行代码的classpath没设好,所以才报noclassdefound

0
jalena
jalena

引用来自“polly”的评论

slf4j本身的依赖呢

maven会自动添加需要的依赖

0
polly
polly

引用来自“polly”的评论

slf4j本身的依赖呢

引用来自“jalena”的评论

maven会自动添加需要的依赖

有maven就没问题,不过存在缓存问题,你把你本地仓库里对应的slf4j的jar删掉,刷新项目试试。

一般ClassNoDefine是因为,他找到了jar,但是在jar里找不到这个类,最大的可能是jar下载不完整。

返回顶部
顶部