日志查看技巧

帆软插件开发中,日志是定位问题最直接的手段。FR/BI 使用帆软自研的 FineLoggerFactory 日志框架,底层基于 Log4j。


在插件中输出日志

import com.fr.log.FineLoggerFactory;
import com.fr.log.FineLogger;

public class MyPlugin {
    private static final FineLogger LOGGER = FineLoggerFactory.getLogger();

    public void doSomething() {
        LOGGER.info("插件执行开始");
        try {
            // ...
        } catch (Exception e) {
            LOGGER.error("插件执行出错:{}", e.getMessage(), e);
        }
    }
}

常用日志级别(从详细到简略):DEBUGINFOWARNERROR


日志文件位置

FR/BI 的日志文件统一写入工作目录的 logs/ 子目录:

${WORK_HOME}/logs/
├── fanruan.log          ← 当天日志(滚动写入)
├── fanruan.log.1        ← 前一天
├── fanruan.log.2        ← 前两天
└── ...

${WORK_HOME} 默认为:

  • FineReport 设计器:~/FineReport_11.5/(或在运行配置中指定的工作目录)
  • FineBI 服务器:Tomcat 工作目录下的 webapps/webroot/WEB-INF/

在 IDEA 控制台查看日志

本地调试时,日志会同时输出到 IDEA 的 Run/Debug 控制台。可使用控制台顶部的过滤框按关键字筛选,例如输入插件包名 com.fr.plugin 快速定位相关日志。


调整日志级别

日志级别通过 ${WORK_HOME}/resources/log4j2.xml(或 log4j.properties)配置:

<!-- 将指定包的日志级别调低,输出更多调试信息 -->
<Logger name="com.fr.plugin.mypackage" level="DEBUG" additivity="false">
    <AppenderRef ref="Console"/>
    <AppenderRef ref="RollingFile"/>
</Logger>

修改配置后重启服务/设计器即可生效。


常用排查手法

场景 方法
插件未加载 搜索日志中的插件 ID,查找 load pluginException 关键字
接口未生效 在接口实现类的入口方法打 INFO 日志,确认是否被调用
数据异常 在关键分支打印输入参数和中间变量
性能问题 在耗时操作前后各打一行 INFO,计算时间差

实时跟踪日志文件

在命令行中实时监控日志输出:

Windows(PowerShell):

Get-Content "${WORK_HOME}\logs\fanruan.log" -Wait -Tail 100

Linux/Mac:

tail -f ${WORK_HOME}/logs/fanruan.log

results matching ""

    No results matching ""