`
流浪鱼
  • 浏览: 1693956 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

log4j动态生成保存文件名

 
阅读更多

项目中有个要求是用log4j做日志的记录,但是要求生成的文件名为用户的ip+当天的时间,这就需要动态的生成文件名了,看了下log4j的配置文件没有发现支持的动态文件名的功能。虽说用${}能去到变量,单要求的是必须在读取配置文件前设置变量。最后在网上发现了一个方法,用来动态生成文件名的

import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
public class LoggerUtil {
   
    public static Logger getLoggerByName(String name) {
        // 生成新的Logger
        // 如果已經有了一個Logger實例返回現有的
        Logger logger = Logger.getLogger(name);
        // 清空Appender。特別是不想使用現存實例時一定要初期化
        logger.removeAllAppenders();
        // 設定Logger級別。
        logger.setLevel(Level.DEBUG);
        // 設定是否繼承父Logger。
        // 默認為true。繼承root輸出。
        // 設定false後將不輸出root。
        logger.setAdditivity(true);
        // 生成新的Appender
        FileAppender appender = new RollingFileAppender();
        PatternLayout layout = new PatternLayout();
        // log的输出形式
        String conversionPattern = "[%d] %p %t %c - %m%n";
        layout.setConversionPattern(conversionPattern);
        appender.setLayout(layout);
        // log输出路径
        // 这里使用了环境变量[catalina.home],只有在tomcat环境下才可以取到
        String tomcatPath = java.lang.System.getProperty("catalina.home");
        appender.setFile(tomcatPath + "/logs/" + name + ".log");
        // log的文字码
        appender.setEncoding("UTF-8");
        // true:在已存在log文件后面追加 false:新log覆盖以前的log
        appender.setAppend(true);
        // 适用当前配置
        appender.activateOptions();
        // 将新的Appender加到Logger中
        logger.addAppender(appender);
        return logger;
    }
}

 原文地址:http://blog.sina.com.cn/s/blog_7101508c0100zh3f.html

 

 

分享到:
评论

相关推荐

    log4j按功能保存日志

    在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...

    log4j 写多个日志文件,按照日期每天都记

    2. **使用DailyRollingFileAppender**:`DailyRollingFileAppender`是`log4j`提供的一种特殊Appender,它可以按照指定的时间间隔(通常是每天)滚动生成新的日志文件。我们可以通过以下配置设置每日滚动: ```...

    log4cpp(添加按日期生成日志类)

    虽然没有提供具体的文件内容,但"log4cpp-1.0"这个文件名可能表示这是Log4cpp的1.0版本,可能是包含源码、库文件、文档等资源的压缩包。通常,这样的包会包含头文件、实现文件、示例代码、配置文件、README文档等,...

    log4net 配置 根据日期生成 文件 根据 分类 (INFO、ERROR) 生成文件

    它基于Apache Logging Services的log4j项目,并进行了扩展和优化,使其更适应.NET环境。log4net提供了一种灵活的日志记录机制,可以将日志信息输出到不同的目标,例如控制台、文件、数据库等。 #### 二、配置详解 ...

    JAVA 视频工具类 可通过视频连接生成视频文件

    - **日志记录**:为了调试和问题排查,工具类可能整合了如Log4j或Java内置的`java.util.logging.Logger`来进行日志输出。 - **元数据处理**:对于视频文件,可能需要解析或设置元数据,如编码、分辨率、时长等,这...

    PDFBox-0.7.2

    8. **与其他库的集成**:PDFBox可以与Java的其他库如Log4j(从文件名`PDFBox-0.7.2-log4j.jar`可以看出)进行集成,提高日志记录的效率和质量,帮助调试和优化代码。 在0.7.2版本中,`PDFBox-0.7.2.jar`是主库文件...

    SpringBoot日记——日志框架篇.docx

    SpringBoot默认会在项目根目录生成名为`spring.log`的日志文件,但可以通过以下配置改变路径和文件名: ```properties logging.path=output/logs logging.file=D:/ooodin.log ``` 这样,日志文件会被保存在指定的...

    利用java生成二维码工具类示例代码

    在这个示例中,`generatEncodeTest`方法接收四个参数:文件路径、文件名、编号和手机号。它首先创建一个JSONObject,将这些信息存储为键值对,然后将JSON对象转换为字符串。接着,使用`MultiFormatWriter`创建`...

    jsp嵌入fck或ck编辑器所需导入的jar包

    3. **slf4j-api**:Simple Logging Facade for Java (SLF4J) 提供了一种标准的接口,可以用来插入各种日志框架,如Log4j、Logback等。在JSP项目中,为了跟踪和记录程序运行状态,导入`slf4j-api.jar`是必要的。 4. ...

    代替OCX Activex 等IE插件的方式

    - 添加依赖项,如Spring Web、Jackson、Log4j2、Jacob等。 - 注意手动安装Jacob至本地Maven仓库。 - **修改配置文件**: - 在`application.yml`中配置服务器端口、日志路径等。 - 配置`log4j2-spring.xml`文件以...

    SpringBoot Logback日志记录到数据库的实现方法

    -- 按照每天生成日志文件 --> <!--日志文件输出的文件名--> ${LOG_HOME}/info/info.log.%d{yyyy-MM-dd}.log <!--日志文件保留天数--> <MaxHistory>30 <!--格式化输出:%d表示日期,%thread表示线程名,...

    错误报告

    - 在处理错误报告时,开发者通常会用到一系列工具,如文本编辑器(如VS Code, Sublime Text)来查看和编辑源码,日志分析工具(如Logcat, Log4j)来解析错误日志,调试器(如GDB, Visual Studio Debugger)来单步...

    利用org.apache.commons.fileupload上传多个文件

    1. **引入依赖**:首先,你需要下载并添加 `org.apache.commons.io` 和 `log4j` 的 JAR 包到你的项目类路径中。在本例中,`io` 包版本为 2.2,而 `log4j` 可用于日志记录,提高程序的可调试性。 2. **配置环境**:...

    springboot + jwt 登录认证 + 实时日志显示

    本项目可能使用了Spring Boot的日志集成,如Logback或Log4j,来记录应用的运行日志。同时,为了实现实时日志显示,可能采用了WebSocket技术。WebSocket提供了一种双向通信协议,允许服务器和客户端之间进行持续的、...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    第19章 使用log4j进行日志操作 564 19.1 log4j介绍 564 19.1.1 logger组件 564 19.1.2 appender组件 566 19.1.3 layout组件 567 19.2 使用log4j 568 19.3 log4j使用实例 572 19.4 ndc和mdc 585 19.5 小结 ...

    基于java和jsp的文件管理系统

    10. **日志记录**:通过Log4j或SLF4J等日志框架记录系统运行状态和错误信息,有助于调试和问题追踪。 总的来说,一个基于Java和JSP的文件管理系统结合了后端处理、Web展示和数据库操作,实现了文件的高效管理。在...

    七牛图片上传

    5. **logging**: 日志记录库,如log4j或slf4j,用于记录SDK执行过程中的信息和错误。 实现七牛图片上传的基本步骤如下: 1. **注册账号与创建空间**:首先,你需要在七牛官网上注册一个账号,然后创建一个存储空间...

    图片上传程序

    可以使用Java的`java.util.logging`或者Log4j等库。 9. **前端交互**:前端通常使用HTML5的`<input type="file">`标签让用户选择文件,并使用JavaScript或jQuery处理文件选择事件,将文件数据通过Ajax提交给后端。 ...

    hibernate4.3.11所需jar包

    - **Jakarta Commons Logging**: 提供日志记录服务,允许Hibernate使用各种日志框架(如log4j, java.util.logging)。 - **JTA (Java Transaction API)**: 支持分布式事务处理,如JBOSS Transactions或Atomikos等...

    ChMatLab中的矩阵计算完美版资料.ppt

    若要保存变量,可以使用Mat文件,例如`save 文件名 变量名表`来将变量保存到磁盘。 ChMatLab提供了丰富的数学函数,包括平方根函数(sqrt)、自然对数函数(log)、常用对数函数(log10)、2的幂次函数(2^x)、...

Global site tag (gtag.js) - Google Analytics