1. 描述编辑
为了加强对报表工程的管理,随时监控其运行状态,可以在平台中设置开启日志查看,如下图所示:
注:仅影响系统日志的输出,不影响操作日志。
2. LogDB编辑
LogDB 是 FineReport 日志监控开启之后保存日志的内置数据库,那么 FineReport 日志都包含哪些内容呢?
下面来介绍一下,LogDB 数据库中各个数据表的含义以及字段的含义。
2.1 连接 LogDB 数据库
点击定义数据连接,新增一个 JDBC 数据连接,设置信息如下表所示:
选项 | 内容 |
---|---|
数据库 | Others |
驱动器 | com.fr.swift.jdbc.Driver |
URL | jdbc:swift:emb://default(Mac、Windows、Linux通用) |
用户名和密码 | 空 |
设计器设置页面如下图所示:
2.2 查看数据表
测试链接成功之后,我们新建一个 数据库查询 ,选择上面创建的数据连接,即可看到日志数据库下面的所有数据表,如下图所示:
注:如果是服务器添加了 LogDB 这个数据连接务必控制这个 数据连接的权限,否则存在被越权访问并修改配置数据库的风险
查询语法可参见文末章节。
2.3 数据表和字段对应的含义
那么 Logdb 数据库中各个数据表和表字段其含义到底是怎么样的呢?
2.3.1 报表(BI)执行表——fine_record_execute
报表访问/导出/打印日志,即如果报表访问/导出/打印的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
id | 主键 |
tname | 物理模板名字(reportlet 下的完整路径) |
displayName | 挂载到平台的目录名称(全路径),如果直接访问链接则为空 |
type | 报表访问方式,具体列举在下面的表格中(0~34) |
param | 参数 |
ip | 执行报表的 IP 地址 |
username | 执行报表的用户 |
userrole | 执行报表的用户角色 |
consume | 执行耗时,包括 SQL 执行时间,报表计算时间 |
time | 日志开始时间 |
sql | SQL 语句 |
sqlTime | SQL 执行的总时间 |
browser | 客户端访问报表所用的浏览器版本 |
memory | 报表占用内存,单位 B ①若因宕机等情况计算中断,记录的是报表开始计算到计算中断所占用的内存(根据格子数估算。一格子占用 0.2KB)。 ②若计算完成,记录的是报表开始计算到计算完成所生成的格子数。 |
reportID | 模板编号 |
userId | 用户 ID |
complete | 是否计算完成 ①若因宕机等情况计算中断,记录为“0”。 ②若计算完成,记录为“1”。 |
visitType | 链接访问/平台访问 |
resource | 访问方式(integration 是通过 URL 访问,single 是平台访问的 ) |
注:userId、complete、visitType、resource 字段需要更新 2019-5-20 以后的 JAR
字段 type 具体含义:
编码 | 类型 | markString |
---|---|---|
0 | 分页预览 | page |
1 | 在线分析 | view |
2 | 填报预览 | write |
3 | 决策报表预览 | form |
4 | 行式引擎 | layer |
5 | 在线编辑 | edit |
6 | 新填报 | write_plus |
10 | Excel分页导出 | excel |
11 | Excel原样导出 | excelO |
12 | Excel整页导出 | excelL |
13 | Excel分页分sheet导出 | excelS |
14 | PDF导出 | |
15 | Word导出 | word |
16 | SVG导出 | svg |
17 | CSV导出 | csv |
18 | 文本导出 | text |
19 | JPG图片导出 | jpg |
20 | PNG图片导出 | png |
21 | GIF图片导出 | gif |
22 | BMP图片导出 | bmp |
23 | WBMP图片导出 | wbmp |
24 | 内置数据集导出模板 | cpt |
25 | HTML导出 | html |
26 | 填报HTML导出 | write_html |
27 | BI导出Excel | |
30 | Flash打印 | flash |
31 | PDF打印 | |
32 | Applet打印 | applet |
33 | 零客户端打印 | |
34 | 本地软件打印 | |
101 | BI模板预览 | |
102 | BI模板编辑 | |
103 | BI模板分享 |
2.3.2 登录表——fine_record_login
登录日志,记录用户登录信息:时间、IP 地址、用户名及角色,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
time | 登录时间 |
ip | 登录 ip 地址 |
username | 登录的用户 |
userrole | 登陆的用户角色 |
2.3.3 邮件表——fine_record_email
邮件发送日志(只包含工具栏中的“邮件”),即如果报表发送邮件的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
receiver | 收件人用户名 |
收件人邮箱 | |
ip | 发送邮件的IP地址 |
username | 发送邮件的用户 |
tname | 物理模板名字(reportlet 下的完整路径) |
displayName | 挂载到平台的目录名称(全路径),如果直接访问链接则为空 |
content | 邮件内容 |
time | 发送时间 |
result | 是否发送成功 |
detail | 详情 |
2.3.4 填报表——fine_record_write
填报日志,即如果报表进行填报的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
username | 填报报表的用户 |
tname | 物理模板名字(reportlet 下的完整路径) |
time | 填报时间 |
sql | SQL 语句 |
sqlTime | SQL 执行的总时间 |
result | 是否填报成功 |
ip | 填报报表的IP地址 |
displayName | 挂载到平台的目录名称(全路径),如果直接访问链接则为空 |
detail | 详情 |
browser | 客户端访问报表所用的浏览器版本 |
consume | 执行耗时,包括 SQL 执行时间,报表计算时间 |
2.3.5 执行出错日志表——fine_record_error
执行出错日志,即如果报表执行的过程中报错的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
displayName | 挂载到平台的目录名称(全路径),如果直接访问链接则为空 |
ip | 执行报表的 IP 地址 |
msg | 错误信息 |
time | 出错记录时间 |
tname | 出错的物理模板名字(reportlet 下的完整路径) |
trace | 错误路径 |
username | 执行报表的用户 |
userrole | 执行报表的用户角色 |
注:如果不是模板出错,则 tname 记录为“非模板触发错误”
2.3.6 fine_function_process
功能点使用日志,即使报表用功能点的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
func | 功能点(值以数组展示:功能:次数,功能:次数) |
time | 记录时间 |
2.3.7 常用参数组合表——fine_record_param
常用参数组合日志,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
templateid | 模板 ID |
username | 用户 |
pgroup | 参数(值以数组展示:参数 1:参数值,参数 2:参数值) |
time | 记录时间 |
2.3.8 短信发送表——fine_record_sms
短信发送日志,即如果发送短信的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
receiver | 收件人用户名 |
mobile | 接收人手机号 |
content | 邮件内容 |
time | 发送时间 |
result | 是否发送成功 |
detail | 详情 |
sender | 发件人用户名 |
2.3.9 管理日志表——fine_record_operate
管理日志,即用户对模块进行操作的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,其各个字段对应的含义如下表:
字段 | 含义 |
---|---|
type | 模块(存国际化的 key) |
item | 设置项 |
resource | 被访问资源 |
operation | 操作 |
username | 用户名 |
ip | 用户 IP 地址 |
time | 用户操作时间 |
detail | 详情 |
requestParam | 请求参数 |
2.3.10 SQL 执行表——fine_record_sql
SQL 执行情况
字段 | 含义 |
---|---|
columns | 数据集规模,列 |
dsname | 数据集的名称 |
executeid | 执行表 ID |
rows | 数据集规模,行 |
sqltime | SQL 执行时间,单位毫秒 |
2.3.11 功能信息表——fine_intelli_focus_point
设计器功能点使用信息
字段 | 含义 |
---|---|
id | 功能点 ID |
text | 国际化 |
source | 功能点的类型,1 是内置 JAR 包的功能点,2 是插件功能点,-1 表示没有定义来源 |
time | 用户操作时间 |
username | 用户名 |
ip | 用户IP地址 |
title | 平台模板名 |
2.3.12 应用实时情况表——fine_real_time_usage
应用实时情况
字段 | 含义 |
---|---|
node | 节点名 |
cpu | CPU 利用率 |
memory | 当前 JVM 内存情况 |
time | 记录时间,每分钟一条 |
sessionNum | 存活会话数 |
onlineNum | 系统在线人数 |
pid | 进程 PID |
注:node、sessionNum、onlineNum、pid 字段需要更新 2019-5-20 以后的 JAR
2.3.13 模板属性表——fine_tpl_info
模板属性,每周执行一次,记录一次
字段 | 含义 |
---|---|
id | 主键 |
tid | 模板 id |
tname | 物理模板名字(reportlets下的完整路径) |
cnums | 条件属性个数 |
formnums | 公式个数 |
sheetnums | 多 sheet 个数 |
dsnums | 数据集个数 |
compformnums | 复杂公式的个数(包括层次坐标、SQL、value 公式) |
submitnums | 内置提交的个数 |
isfrozen | 是否使用了冻结 |
isfoldtree | 是否使用了折叠树 |
widgetnums | 控件个数 |
filterNums | 过滤个数 |
injectNums | 参数注入个数 |
formula | 模板内公式使用情况 |
JSAPI | 模板内 JS API 使用情况 |
tsize | 模板总大小 |
imgsize | 模板里图片的大小 |
execute0-execute4 | 执行时间的 5 级的分段记录 |
mem0-mem4 | 内存使用量的 5 级的分段记录 |
sql0-sql4 | SQL 执行时间的 5 级的分段记录 |
recordtime | 记录时间 |
注:filterNums、injectNums、formula、JSAPI 字段需要更新 2019-5-20 以后的 JAR
2.3.14 系统关闭记录——fine_operation_shutdown_record
描述:记录系统关闭前后的进程信息以及关闭类型。
字段 | 备注 |
---|---|
node | 节点名 |
time | 当前时间 |
pid | 进程 PID |
startTime | 进程开始时间 |
upTime | 进程持续时间 |
signalName | 信号量 |
2.3.15 容器配置情况(fine_container_entity)
描述:应用所在容器、服务器的配置信息。每日记录一次。
字段 | 备注 |
---|---|
node | 节点名 |
time | 时间,到日 |
item | 配置项 |
value | 值 |
其中itme包括:
item | 说明 |
---|---|
containerMem | 容器设置的内存大小 |
cpu | CPU 核数 |
disk | 磁盘情况 |
jdkVersion | JDK 版本 |
containerVersion | Web 容器版本 |
machineMem | 物理机内存 |
system | 服务器操作系统 |
systemNum | 服务器操作系统位数 |
cpuModel | 处理器型号 |
diskSpeed | 磁盘存取速度 |
jarVersion | JAR 包版本 |
licType | 注册类型(正式/临时) |
expireTime | 注册到期时间 |
2.3.16 配置信息——fine_record_conf
描述:每日将 FineDB 中的 fine_conf_entity 表记录一次。去除了fine_conf_entity表中的敏感信息,包括:BI 业务包相关配置、数据连接的密码&用户名&URL、服务器数据集相关信息、连接池中的 SQL 验证查询、集群配置中状态服务器与文件服务器的地址&用户名&密码、邮件服务器配置的用户名&密码(原则是去除任何 SQL 语句、用户名、密码、服务器地址信息)。
字段 | 含义 |
---|---|
id | 数据在配置中的位置 |
value | 数据值 |
time | 时间,到日 |
2.3.17 插件使用情况——fine_plugin_usage
描述:插件的使用情况,每个插件每日记录一次。
字段 | 备注 |
---|---|
time | 时间,到日 |
plugin | 插件名 |
version | 插件版本 |
API | 插件中所用接口情况 |
opration | 插件运行情况 |
register | 插件注册情况 |
enable | 插件是否启用 |
2.3.18——功能点购买情况——fine_function_possess
描述:功能点购买情况,每日记录一次。
字段 | 备注 |
---|---|
time | 时间,到日 |
function | 功能点购买情况 |
2.3.19 性能信息表——fine_intelli_consume_point
描述:性能相关信息
字段 | 说明 | 备注 |
---|---|---|
id | 埋点 id 编号 | |
source | 埋点来源 | Original 类里面 embed 表示当前系统的,plugin 表示插件的埋点,undefined 表示没有定义来源 |
time | 时间 | 开始时间 |
endTime | 结束时间 | |
consume | 耗时 单位 ms | |
memory | 内存大小 单位 byte | |
username | 操作者 | |
ip | 操作 IP | |
title | 资源 ID | 可以是模板 ID,分析表 ID,表 ID 等 |
text | 资源内容 | 可以是模板名字,分析表名字,等,可以根据 |
type | 操作类型 | 可以表明是进行了哪种操作 |
comment | 资源备注 | 可以是可以是更具体一些的信息,需要直接分析的数据。 |
body | 埋点具体信息 | 一个 JSON 数据结构,根据不同的埋点里面存放不同的信息 |
3. 查询语法编辑
3.1 明细查询
SQL 语句示例:
1)select * from fine_record_execute
2)select tname, displayName, consume from fine_record_execute
3.2 GROUP BY 查询
GROUP BY 查询,有 SUM,COUNT, MAX, MIN, AVG 这五种聚合方式,如果什么都不写,会默认 COUNT
SQL 语句示例:
1)select sum(consume) from fine_record_execute group by tname, displayName
2)select consume from fine_record_execute group by tname, displayName
3)select min(consume), max(consume) from fine_record_execute group by tname, displayName
3.3 WHERE 过滤条件
简单的 WHERE 过滤条件,支持 AND, OR, =,<>,>,>=, <,<=, in, isnull
SQL 语句示例:
1)select * from fine_record_execute where consume > 10
2)select sum(consume) from fine_record_execute where consume > 10 and consume < 100 group by tname, displayName
3)select consume from fine_record_execute where tname = `doc/Advanced/Chart/GraphSwitching/多图表实现统一切换.frm`
4)select sum(consume) from fine_record_execute where tname in (`doc/Advanced/Chart/GraphSwitching/多图表实现统一切换.frm`, `doc/Advanced/Chart/Combination/柱形-面积组合图.cpt`) group by tname, displayName
3.4 todate() 将时间戳转换为普通的日期类型
todate() 结果的日期格式为:2018-12-18 10:15:26
SQL 语句示例:
1) select todate(time) from fine_record_execute
2) select * from fine_record_execute where todate(time)<'2018-12-18 10:15:26' and todate(time)>'2018-12-17 10:15:26'
注: 需要更新 2019-5-20 以后的 JAR。
3.5 like 模糊查询
只支持前后‘%’的用法
SQL 语句示例:
1)select * from fine_record_execute where tname like '%demo%'
注:目前只支持 '%',暂不支持通配符 ‘_’,需要更新 2019-5-20 以后的 JAR。