Commit Graph

8 Commits (8395982244bf032676624af97e5ddb9bb6636bd8)

Author SHA1 Message Date
Alejandro Sirgo Rica dfde363aa6 src: log backtrace in unhandled error cases
Log an error message in known error cases and log a backtrace
otherwise.

Define a new error type OgError to be used in all the 'raise'
blocks to define the error message to log. The exception
propagates until it reaches send_internal_server_error() where
the exception type is checked. If the type is OgError we log
the exception message. Logs the backtrace for other types.

The initial error implementation printed a backtrace everytime
an error ocurred. The next iteration changed it to only print
a backtrace in a very particular case but ended up omiting too
much information such as syntax errors or unknown error context.
The actual implementation only logs the cases we already cover in
the codebase and logs a bracktrace in the others, enabling a
better debugging experience.
2024-04-03 13:31:10 +02:00
Alejandro Sirgo Rica 049b7a5a2b src: make exception messages more contextual and explicit
Provide more information in exception messages as those are the
source of the logging messages. Add information about paths, files
or configuration related to the operation associated to the
exception.
2024-03-21 10:29:57 +01:00
Jose M. Guisado 2ddea6d514 src: add missing copyright notices 2023-04-18 17:26:40 +02:00
Jose M. Guisado 7f6a7b664b log: add file handler for ogLive "real time log"
Clients running in ogLive can show log messages via a lighttp server.
Particularly, a html page named "real time log" consists of <text-area>
tags with the contents of two particular text files
/tmp/session.log and /tmp/command.log

Adds a Python logging handler in order to write ogClient log messages
into /tmp/session.log. This way ogClient logs are show in the "real time
log" html page too.
2022-12-05 16:19:57 +01:00
Javier Sánchez Parra 94f6793f96 log: declare samba handler only in live mode
ogClient in linux mode only write its logs to syslog and the console.

Also, raise exception if mode its not supported.
2022-11-02 16:37:46 +01:00
Javier Sánchez Parra f1fff0b0b6 log: import fcntl only on linux
Otherwise, ogClient do not work on Windows because fcntl module do not
exists on Windows.
2022-11-02 16:37:41 +01:00
Jose M. Guisado 30fdcceea3 src: improve logging
Adds new logging handler redirecting messages to the log file
located in the Samba shared directory (applies to live mode
clients, i.e: ogLive)

Parses log level configuration from ogclient.json. See:

{
	"opengnsys": {
		...
                "log": "INFO",
		...
	}
	...
}

Adds --debug option to set root logger level to DEBUG when starting
ogClient. Overrides log level from config file.

In addition:

- Replaces any occurence of print with a corresponding logging function.
- Unsets log level for handlers, use root logger level instead.
- Default level for root logger is INFO.
- Replaces level from response log messages to debug (ogRest)
2022-06-08 10:27:06 +02:00
Jose M. Guisado 3dfe54968b #1065 Use logging module instead of syslog
We can't use syslog if we want to execute ogClient in the Windows
platform.

Use the native logging library so we can attach different handlers
depending on the mode ogClient is executing.

Logging configuration is done via a python dict. There is a different
dict for linux and windows. These dicts define the configuration of the
root logger, handlers and formatters used.

As of now, it is only expected to use the root logger for everything
logging related. The root logger is obtained via:

	LOGGER = logging.getLogger()

More info about handlers, formatters and loggers:
	https://docs.python.org/3/howto/logging.html

Logging configuration is done at startup, just after parsing the json
(knowing ogclient mode). If json parsing goes bad, ogclient will only
print a message to stdout.
2021-11-18 10:29:46 +01:00