通过代码配置logback

import java.nio.charset.Charset;

import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.ConsoleAppender;
import ch.qos.logback.core.FileAppender;


/**
 * Hello world!1
 *
 */
public class MainApp
{
    public static void main( String[] args )
    {
    	Logger logger=MyLoggerFactory.getLogger();
    	logger.info("this is text log.");
        
    }
}
class MyLoggerFactory{

    private static Logger logger = null;
    public static Logger getLogger() {
    	return logger;
    }
	//在类加载时执行,保证执行一遍,不在执行,保证单实例。
	 static {
	      LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
	      FileAppender<ILoggingEvent> fa=new FileAppender<ILoggingEvent>();
	      fa.setContext(loggerContext);
	      fa.setAppend(true);
	      fa.setName("FILE");
	      String s=System.getProperty("user.dir")+"\\log.txt";
	      fa.setFile(s);
	      ConsoleAppender<ILoggingEvent> ca=new ConsoleAppender<ILoggingEvent>();
	      ca.setName("CONSOLE");
	      //内容配置
	      PatternLayoutEncoder encoder = new PatternLayoutEncoder();
	      encoder.setPattern("%msg");
	      encoder.setCharset(Charset.forName("UTF-8"));
	      encoder.setContext(loggerContext);
	      encoder.start();
	      /////////////////////////////////
	      fa.setEncoder(encoder);
	      ca.setEncoder(encoder);
	      fa.start();
	      ca.start();

	      ch.qos.logback.classic.Logger rootLogger = loggerContext.getLogger("rootLogLogger");
	      rootLogger.setLevel(Level.INFO);
	      rootLogger.addAppender(ca);
	      rootLogger.addAppender(fa);
	      rootLogger.setAdditive(false);
	      logger = rootLogger;
	  }
   
}

通过以上代码,就可以实现在命令行与文件同时输出信息,并且输出目录为当前文件夹

如果没打包之前,那么是项目根目录

如果打包后,是运行程序所在的目录

### 如何正确配置 Logback 示例教程 在 Spring Boot 应用程序中,Logback 是常用的日志框架之一。以下是关于如何正确配置 Logback 的详细说明。 #### 1. 使用默认的 `logback-spring.xml` 文件 Spring Boot 默认支持 `logback-spring.xml` 文件作为日志配置文件[^1]。可以通过在项目的 `resources` 目录下创建此文件来实现自定义的日志功能。 ```xml <configuration> <!-- 定义全局变量 --> <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- 文件输出 --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>logs/app.log</file> <append>true</append> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- 设置根日志级别并附加控制台和文件输出 --> <root level="info"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> </configuration> ``` 上述代码片段展示了如何通过 XML 配置文件设置控制台和文件两种日志输出方式[^4]。 #### 2. 自定义日志配置文件名 如果希望使用其他名称(如 `logback-config.xml`),可以在 `application.properties` 或 `application.yml` 中指定: ```properties logging.config=classpath:logback-config.xml ``` 这样就可以加载名为 `logback-config.xml` 的日志配置文件。 #### 3. 将日志写入文件 为了将日志记录到文件中,默认情况下需要手动启用这一功能[^3]。可以使用以下方法完成: - **单个日志文件** 在 `application.properties` 中添加如下内容: ```properties logging.file.name=my-application.log ``` - **日志目录** 如果更倾向于将日志存储在一个特定目录下的多个文件中,则可使用: ```properties logging.file.path=/var/log/my-app/ ``` 这将在 `/var/log/my-app/` 路径下生成一个名为 `spring.log` 的日志文件。 #### 4. 日志级别管理 可以根据需求调整不同包或类别的日志级别。例如,在 `logback-spring.xml` 中增加以下内容以单独设定某些模块的日志等级: ```xml <!-- 设定 org.springframework 包及其子包的日志级别为 DEBUG --> <logger name="org.springframework" level="debug" additivity="false"> <appender-ref ref="STDOUT"/> </logger> ``` 以上操作允许针对具体组件开启更高的调试信息显示[^2]。 --- ### 总结 通过对 `logback-spring.xml` 进行合理编辑以及适当修改项目属性文件中的相关内容,能够灵活满足各种复杂的业务场景对于日志的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值