一直用pgbadger分析postgresql的日志,发现周末两天的日志分析出来问题。报错信息如下:
$ /bin/pgbadger /abce/11/log/postgresql-2021-08-08_000000.csv FATAL: unable to detect log file format from /abce/11/log/postgresql-2021-08-08_000000.csv, please use -f option. - Error at line 17284
从报错信息看,是pgbadger无法检测文件格式。
比较了一下文件的差异
$ file postgresql-2021-08-06_000000.csv postgresql-2021-08-06_000000.csv: C source, UTF-8 Unicode text, with very long lines $ file postgresql-2021-08-09_000000.csv postgresql-2021-08-09_000000.csv: UTF-8 Unicode text, with very long lines
之前还是一直是"C source, UTF-8 Unicode text, with very long lines",不知道这两天怎么变成了" UTF-8 Unicode text, with very long lines"。这里的原因暂时还没有查明。
根据提示,使用了-f选项。
$ pgbadger --help Usage: pgbadger [options] logfile [...] PostgreSQL log analyzer with fully detailed reports and graphs. Arguments: logfile can be a single log file, a list of files, or a shell command returning a list of files. If you want to pass log content from stdin use - as filename. Note that input from stdin will not work with csvlog. Options: ... -f | --format logtype : possible values: syslog, syslog2, stderr, jsonlog, cvs, pgbouncer, logplex, rds and redshift. Use this option when pgBadger is not able to detect the log format. ...
虽然执行成功了,但是没有查询语句的信息。
$ /bin/pgbadger /abce/11/log/postgresql-2021-08-09_000000.csv -f cvs [========================>] Parsed 58191613 bytes of 58191613 (100.00%), queries: 0, events: 0 LOG: Ok, generating html report...
根据"queries: 0, events: 0"也可以看出来有问题。
然后,将选项"-f cvs"换成了"-f csv",再次执行,却成功了:
$ /bin/pgbadger /abce/11/log/postgresql-2021-08-09_000000.csv -f csv [========================>] Parsed 28324055 bytes of 28324055 (100.00%), queries: 2328, events: 10209 LOG: Ok, generating html report... Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12057. Wide character in print at /bin/pgbadger line 12312. Wide character in print at /bin/pgbadger line 12312. Wide character in print at /bin/pgbadger line 12312.