# 操作日志
操作日志是指数据库管理员使用工具操作数据库时以及工具被集群调用时产生的日志。如果集群发生故障，可以通过这些日志信息跟踪用户对数据库进行了哪些操作，重现故障场景。
#### 日志文件存储路径
默认在"$GAUSSLOG/om"和"$GAUSSLOG/bin"目录下，如果环境变量$GAUSSLOG不存在或者变量值为空，则工具日志信息不会记录到对应的工具日志文件中，日志信息只会打印到屏幕上。
#### 日志文件命名格式
日志文件命名格式为：
- 工具名-日志创建时间.log
- 工具名-日志创建时间-current.log
其中，"工具名-日志创建时间.log"是历史日志文件，"工具名-日志创建时间-current.log"是当前日志文件。
如果日志大小超过16MB，在下一次调用该工具时，会重命名当前日志文件为历史日志文件，并以当前时间生成新的当前日志文件。例如将"gs_guc-2015-01-16_183728-current.log"重命名为"gs_guc-2015-01-16_183728.log"，然后重新生成"gs_guc-2015-01-17_142216-current.log"。
#### 日志内容说明
- OM工具日志，其包含的gs_install、gs_preinstall、gs_om、gs_expand、gs_replace、gs_local、checkRunStatus（运维操作状态检查接口）、JsonToDbclusterInfo（集群拓扑Json转xml工具）、killall_log、uploader(pscp工具)、cmd_sender(pssh工具)的每一行日志内容的默认格式：
  调用链ID+日期时间+线程ID+日志上报位置+线程名+日志级别+\[Step\*\]+日志内容
  表1OM包含的工具或者组件的日志参数 
  | 字段名称   | 字段含义                                            |
  |:---|:---|
  | 调用链ID   | 调用链ID。                                          |
  | 日期时间    | 日志生成的日期和时间，格式：yyyy-mm-dd hh:mm:ss.ms。           |
  | 线程ID     | 当前生成日志的线程ID号。                                     |
  | 日志上报位置 | 当前生成日志可能会包含多行，日志上报位置表示日志内容处于执行文件的第几行。            |
  | 线程名      | 当前生成日志的线程名称。                                    |
  | 日志级别    | 日志的级别，不同级别表示不同的严重程度，有LOG、DEBUG、WARNING、ERROR等级别。 |
  | Step\*  | 当前时间执行的步骤编号。                                    |
  | 日志内容     | 日志内容。                                           |
     
  
 
- gs_initdb日志内容的默认格式： 日期+时间+日志级别+日志内容
  表2gs_initdb日志参数 
  | 字段名称   | 字段含义                                           |
  |:---|:---|
  | 日期     | 日志生成的日期，格式：yyyy-mm-dd。                          |
  | 时间      | 日志生成的时间，格式：hh:mm:ss。                            |
  | 日志级别 | 日志的级别，不同级别表示不同的严重程度，有LOG、WARNING、ERROR、FATAL等级别。 |
  | 日志内容     | 日志内容。                                            |
     
  

- gs_guc日志内容的默认格式： 日期+时间+日志内容
  表3gs_guc日志参数 
  | 字段名称  | 字段含义                 |
  |:---|:---|
  | 日期      | 日志生成的日期，格式：yyyy-mm-dd。 |
  | 时间     | 日志生成的时间，格式：hh:mm:ss。   |
  | 日志内容 | 日志内容。                |
     
  
- gs_cgroup每一行日志内容的默认格式： 调用链ID+日期时间+线程ID+日志上报位置+线程名+日志级别+日志内容
  表4gs_cgroup日志参数 
  | 字段名称   | 字段含义                                              |
  |:---|:---|
  | 调用链ID | 调用链ID。                                            |
  | 日期时间   | 日志生成的日期 时间，格式：yyyy-mm-dd hh:mm:ss.ms。             |
  | 线程ID    | 当前生成日志的线程ID号。                                  |
  | 日志上报位置  | 当前生成日志可能会包含多行，日志上报位置表示日志内容处于执行文件的第几行。             |
  | 线程名     | 当前生成日志的线程名称。                                    |
  | 日志级别    | 日志的级别，不同级别表示不同的严重程度，有LOG、DEBUG、WARNING、ERROR等级别。 |
  | 日志内容   | 日志内容。                                             |
     
  
- gs_clean每一行日志内容的默认格式： 日期+时间+日志内容
  表5gs_clean日志参数 
  | 字段名称 | 字段含义                 |
  |:---|:---|
  | 日期    | 日志生成的日期，格式：yyyy-mm-dd。 |
  | 时间    | 日志生成的时间，格式：hh:mm:ss。  |
  | 日志内容  | 日志内容。                  |
     
  

- gs_ctl每一行日志内容的默认格式： 日期+时间+线程ID+node_name+线程名+日志内容
  表6gs_ctl日志参数 
  | 字段名称      | 字段含义                   |
  |:---|:---|
  | 日期         | 日志生成的日期，格式：yyyy-mm-dd。 |
  | 时间          | 日志生成的时间，格式：hh:mm:ss.ms。  |
  | 线程ID       | 当前生成日志的线程ID号。        |
  | node_name | 实例名称。                 |
  | 线程名       | 当前生成日志的线程名称。         |
  | 日志内容       | 日志内容。                  |
     
  
- gs_initgtm每一行日志内容的默认格式： 日期+时间+日志内容
  表7gs_initgtm日志参数 
  | 字段名称  | 字段含义                   |
  |:---|:---|
  | 日期   | 日志生成的日期，格式：yyyy-mm-dd。 |
  | 时间    | 日志生成的时间，格式：hh:mm:ss。   |
  | 日志内容 | 日志内容。                 |
     
  
- gs_obs每一行日志内容的默认格式： 日期+时间+日志级别+线程ID+日志内容
  表8gs_obs日志参数 
  | 字段名称    | 字段含义                                            |
  |:---|:---|
  | 日期     | 日志生成的日期，格式：yyyy-mm-dd。                           |
  | 时间     | 日志生成的时间，格式：hh:mm:ss.ms。                         |
  | 日志级别   | 日志的级别，不同级别表示不同的严重程度，有LOG、WARNING、ERROR、FATAL等级别。 |
  | 线程ID   | 当前生成日志的线程ID号。                                   |
  | 日志内容 | 日志内容。                                           |
     
  
- gtm_ctl日志内容的默认格式： 日期+时间+日志内容
  表9gtm_ctl日志参数 
  | 字段名称 | 字段含义                    |
  |:---|:---|
  | 日期   | 日志生成的日期，格式：yyyy-mm-dd。 |
  | 时间   | 日志生成的时间，格式：hh:mm:ss。   |
  | 日志内容 | 日志内容。                |
     
  
- gs_redis每一行日志内容的默认格式： 日期+时间+时间戳+线程名+线程ID+日志上报位置+step\[\*\]+日志内容
  表10gs_redis日志参数 
  | 字段名称       | 字段含义                   |
  |:---|:---|
  | 日期        | 日志生成的日期，格式：yyyy-mm-dd。 |
  | 时间         | 日志生成的时间，格式：hh:mm:ss:ms。 |
  | 时间戳          | 当前时间的时间戳。              |
  | 线程名        | 打印日志的线程名。                |
  | 线程ID       | 当前生成日志的线程ID号。            |
  | step\[\*\] | 当前时间执行的步骤编号。           |
  | 日志内容      | 日志内容。                  |
     
  
#### 日志示例
- OM工具日志的典型样例：
  ```
  [220822164bc111ee9466fa163e8dd000][2023-09-05 08:02:11.098083][11214][InstallImpl.py(doStart:864)][gs_install][DEBUG][Step7]:Successfully started the cluster.
  ```
  
 
- gs_initdb日志的典型样例：
  ```
  [2023-09-05 07:57:01]
  WARNING: enabling "trust" authentication for local connections
  You can change this by editing gs_hba.conf or using the option -A, or
  --auth-local and --auth-host, the next time you run gs_initdb.
  ```
  
- gs_guc日志的典型样例：
  ```
  [2023-09-05 09:05:06]
  Begin to perform the total nodes: 3.
  Popen count is 3, Popen success count is 3, Popen failure count is 0.
  Begin to perform gs_guc for datanodes.
  [2023-09-05 09:05:07]
  expected instance path: [/var/lib/engine/data1/data/dn_6001/gaussdb.conf]
  expected instance path: [/var/lib/engine/data1/data/dn_6005/gaussdb.conf]
  gs_guc reload: key=value: [/var/lib/engine/data1/data/dn_6001/gaussdb.conf]
  server signaled
  gs_guc reload: key=value: [/var/lib/engine/data1/data/dn_6005/gaussdb.conf]
  server signaled
  Total instances: 2. Failed instances: 0.
  Success to perform gs_guc!
  Command count is 3, Command success count is 3, Command failure count is 0.
  Total instances: 6. Failed instances: 0.
  ALL: Success to perform gs_guc!
  ```
  
- gs_cgroup日志的典型样例：
  ```
  [de86987e4bc011eeb3befa163e8dd000][2023-09-05 15:51:49.372997][947][PreInstallUtility.py(setCgroup:1793)][gs_cgroup][DEBUG]:The gs_cgroup run with the following arguments: [/var/chroot/usr/local/package/dependency/bin/gs_cgroup -U Ruby --upgrade -c -H /var/chroot/usr/local/tool/Ruby ].
  '/sys/fs/cgroup/cpu,cpuacct/CM:Ruby' exists, omit to create this cgroup.
  '/sys/fs/cgroup/cpu,cpuacct/CM:Ruby' exists, omit to create this cgroup.
  ```
  
- gs_clean日志的典型样例：
  ```
  2023-09-05 09:06:57  gs_clean: connected successfully
  ```
  

- gs_ctl日志的典型样例：
  ```
  [2023-09-05 08:00:59.538][4053][dn_6004_6005_6006][gs_ctl]: finish fsync all files.
  ```
  

- gs_initgtm日志的典型样例：
  ```
  [2023-09-05 09:05:06] gs_initgtm: input file location must be an absolute path.
  ```
  

- gs_obs日志的典型样例：
  ```
  2025-01-21 11:06:42.867| INFO|[140565224322816]|Enter complete_multi_part_upload successfully !
  ```
  
- gtm_ctl日志的典型样例：
  ```
  [2023-09-05 08:00:40]
   Set GTM syncmode succeeded.
  ```
  
- gs_redis日志的典型样例：
  ```
  2023-09-05 08:53:01  1693903981339 worker 140463824475904 [snapshot.snap_summary_stat_all_indexes] step[2]: END successfully
  ```
  
#### 维护建议
建议定时对过期的日志文件进行转储，以避免大量日志占用太多的磁盘空间和避免重要日志丢失。
