dblog is shell script to parse the messages in db log files. Its core function (LogParser) was written fro new version of dbmon script but it can be used separately. We have the customers that create almost 1GB of db logs per day. The goal is to convert this huge volume to something much more compact to be able to review the logs but on other hands "I don't want to miss a thing".

With dblog you can parse the whole db log:
dblog.sh dbname.lg [options]

Or you can parse only the recent messages in db log:
tail -1000000 dbname.lg | dblog.sh dbname.lg [options]

Available options:

-f Show the fatal errors (marked as "F" in Progress log files). In fact they are "fatal" for a process that issues the error but also they can be fatal for the whole database. It's the messages that begin with %g or %G tags in the promsgs file where "G" is for "Gronk", not for "George" (I hope ;-).

-e Show the system errors (the messages with words "SYSTEM ERROR:"). This group includes some fatal errors as well.

-r Show the "remained" messages - all messages except the ones that belong to "Logins", "Params" and "Ignore" groups. The script explicitly define the list of "Logins" group (any messages that somehow related to logins/logouts) and the list of "Ignore" group (all messages that can be skipped while parsing a log). The group of the "remained" messages includes the errors/warning of any kind.

-p Show the startup parameters of Progress multi-user sessions ("Params" group). This group is defined implicitly.

-s Summary: the number of messages per message numbers (and per messages without numbers). You will get the counts of the messages from all groups including the "Ignore" group.

-l Report the statistics for the messages in the "Logins" group. How often the messages from "Logins" group where issued per a specified interval. Database logs store some indirect performance indicators. The -l option can reveal them.

A bonus:
dblog.sh -n <Num> will show the description of the message with the specified number.

Frequently asked question: What is the script waiting for if I run it without any parameters.
The answer: It waits for the messages from the sdtin stream. As the "cat" command will do.

The most recent version of the script can be downloaded here: