You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Jira插件REST端点创建名为itrac-plugins的自定义日志文件

解决Jira插件日志输出到自定义文件的问题

要让你的Jira插件REST端点的日志输出到itrac-plugins.log,需要通过配置Log4j(或Log4j2,取决于Jira版本)的Appender和Logger来实现,而不是直接修改Logger.getLogger()的参数为文件名。以下是详细步骤:

1. 确定Jira使用的日志框架

从你的代码中org.apache.log4j.Logger可以看出,你的Jira版本使用的是Log4j 1.x(旧版本Jira)。如果是Jira 8及以上版本,默认使用Log4j2,配置方式略有不同,下面会分别说明。

2. 配置Log4j 1.x(适用于Jira 7及以下)

Jira的Log4j配置文件位于JIRA_INSTALL/atlassian-jira/WEB-INF/classes/log4j.properties(JIRA_INSTALL是你的Jira安装目录)。

步骤2.1 添加自定义Appender

在配置文件末尾添加以下内容,定义输出到itrac-plugins.log的Appender:

# 自定义itrac-plugins日志文件的Appender
log4j.appender.itracplugins=org.apache.log4j.RollingFileAppender
# 指定日志文件路径,${catalina.home}是Tomcat的根目录,也可以写绝对路径
log4j.appender.itracplugins.File=${catalina.home}/logs/itrac-plugins.log
# 单个日志文件最大大小
log4j.appender.itracplugins.MaxFileSize=20MB
# 保留的备份日志数量
log4j.appender.itracplugins.MaxBackupIndex=5
# 日志格式
log4j.appender.itracplugins.layout=org.apache.log4j.PatternLayout
log4j.appender.itracplugins.layout.ConversionPattern=%d{ISO8601} %t %-5p %c %x - %m%n

步骤2.2 绑定专属Logger

接着添加Logger配置,将指定的日志分类绑定到上面的Appender:

# 创建专属Logger,名字可以自定义(建议用插件的包名/标识,避免冲突)
log4j.logger.com.yourcompany.itracplugins=WARN, itracplugins
# 禁止日志向上传递到父Logger(避免同时输出到atlassian-jira.log)
log4j.additivity.com.yourcompany.itracplugins=false

3. 配置Log4j2(适用于Jira 8及以上)

Jira 8+使用Log4j2,配置文件位于JIRA_INSTALL/atlassian-jira/WEB-INF/classes/log4j2.xml。

步骤3.1 添加自定义Appender

在<Appenders>标签内添加:

<RollingFile name="ITRAC_PLUGINS" fileName="${sys:catalina.home}/logs/itrac-plugins.log"
             filePattern="${sys:catalina.home}/logs/itrac-plugins-%d{yyyy-MM-dd}-%i.log.gz">
    <!-- 日志格式 -->
    <PatternLayout pattern="%d{ISO8601} %t %-5p %c %x - %m%n"/>
    <!-- 滚动策略:文件达到20MB时分割 -->
    <Policies>
        <SizeBasedTriggeringPolicy size="20MB"/>
    </Policies>
    <!-- 保留最多5个备份文件 -->
    <DefaultRolloverStrategy max="5"/>
</RollingFile>

步骤3.2 绑定专属Logger

在<Loggers>标签内添加:

<Logger name="com.yourcompany.itracplugins" level="warn" additivity="false">
    <AppenderRef ref="ITRAC_PLUGINS"/>
</Logger>

4. 修改插件代码中的日志获取逻辑

将原来的日志获取语句:

def log = Logger.getLogger("atlassian-jira.log")

替换为:

// 使用我们配置的Logger名字
def log = Logger.getLogger("com.yourcompany.itracplugins")

这样,当你调用log.warn(...)时,日志就会输出到itrac-plugins.log中,而不会再写入atlassian-jira.log。

5. 重启Jira使配置生效

修改Log4j配置文件后,必须重启Jira服务,新的日志配置才能生效。

关键说明

你之前直接用Logger.getLogger("itrac-plugins.log")无效的原因是:

  • Log4j中Logger.getLogger()的参数是日志分类名称(用于区分不同来源的日志),而不是文件名。
  • 文件名是通过Appender配置指定的,需要将Logger与对应的Appender绑定,才能让该分类的日志输出到指定文件。

内容的提问来源于stack exchange,提问作者منى

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 16:12:26