开发者社区> 问答> 正文

sfl4j 如何配置???-配置报错

"

maven 依赖已添加

src下也配置了。


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

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

"

展开
收起
montos 2020-06-01 21:12:08 635 0
1 条回答
写回答
取消 提交回答
  • "

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

    ######哎,还是没说到重点,没法解决问题######

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

    ######

    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);
    	}
    
    }

     

    ######slf4j本身的依赖呢######

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

    ######

    引用来自“polly”的评论

    slf4j本身的依赖呢

    maven会自动添加需要的依赖

    ######

    引用来自“polly”的评论

    slf4j本身的依赖呢

    引用来自“jalena”的评论

    maven会自动添加需要的依赖

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

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

    "
    2020-06-01 21:12:20
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载