Logging
A class to handle logging messages with different verbosity levels.
__init__(logger_settings=None, logfile_name=None, file_verbosity='detailed', console_verbosity='summary', max_lines=10000)
Initializes the logger with configuration settings.
If logger_settings are provided, it will override the individual parameters.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
logger_settings
|
Optional[dict]
|
A dictionary containing logger settings. If provided, it should include the same keys as the individual parameters below: |
None
|
logfile_name
|
Optional[str]
|
The name of the log file. If None, no file logging will be done. |
None
|
file_verbosity
|
Optional[str]
|
Verbosity level for file logging |
'detailed'
|
console_verbosity
|
(Optional[str]
|
Verbosity level for console logging |
'summary'
|
max_lines
|
(Optional[int]
|
Maximum number of lines to keep in the log file |
10000
|
clear_fatal_error()
Clear a previously logged fatal error.
Returns:
Name | Type | Description |
---|---|---|
result |
bool
|
True if the file was deleted, False if it did not exist. |
get_fatal_error()
Returns True if a fatal error was previously reported, false otherwise.
get_os()
Returns the name of the operating system.
Returns:
Name | Type | Description |
---|---|---|
os_string |
str
|
The name of the operating system in lowercase. |
get_process_id()
Returns the process ID of the current process.
Returns:
Name | Type | Description |
---|---|---|
process_id |
int
|
The process ID of the current process. |
is_probable_path(possible_path)
Checks if the given string or Path object is likely to be a file path.
This method checks if the string is an absolute path, contains a path separator, or has a file extension.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
possible_path
|
str
|
The string to check. |
required |
Returns:
Name | Type | Description |
---|---|---|
result |
bool
|
True if the string is likely a file path, False otherwise. |
log_fatal_error(message, report_stack=False, calling_function=None)
Log a fatal error, send an email if configured to so and then exit the program.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message
|
str
|
The error message to log. |
required |
report_stack
|
Optional[bool]
|
If True, include the stack trace in the log message. |
False
|
calling_function
|
Optional[str]
|
The name of the function that called this method, if known. If None, the calling function will be determined automatically. |
None
|
Raises:
Type | Description |
---|---|
SystemExit
|
Exits the program with a status code of 1 after logging the fatal error. |
log_message(message, verbosity='summary')
Writes a log message to the console and/or a file based on verbosity settings.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message
|
str
|
The message to log. |
required |
verbosity
|
str
|
The verbosity level for the message. Must be one of "none", "error", "warning", "summary", "detailed", "debug", or "all". |
'summary'
|
Raises:
Type | Description |
---|---|
ValueError
|
If an invalid verbosity level is provided. |
register_email_settings(email_settings)
Registers email settings for sending emails.
Use the SCConfigManager.get_email_settings() method to get a dictionary containing the email settings. Otherwise, you can pass a dictionary directly to this method with these keys: SendEmailsTo: str, the email address to send emails to SMTPServer: str, the SMTP server address SMTPPort: int, the SMTP server port (optional, defaults to 587) SMTPUsername: str, the username for the SMTP server SMTPPassword: str, the password for the SMTP server (preferably an App Password) SubjectPrefix: str, a prefix for email subjects (optional, default to None)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
email_settings
|
Optional[dict]
|
A dictionary containing email settings. If empty or None, no email settings will be registered. |
required |
Raises:
Type | Description |
---|---|
TypeError
|
If email_settings is not a dictionary. |
ValueError
|
If any required keys are missing from the email_settings dictionary. |
select_file_location(file_name)
Selects the file location for the given file name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
file_name
|
str
|
The name of the file to locate. Can be just a file name, or a relative or absolute path. |
required |
Returns:
Name | Type | Description |
---|---|---|
location |
Path
|
The full path to the file as a Path object. If the file does not exist in the current directory, it will look in the script directory. |
send_email(subject, body, test_mode=False)
Sends an email using the SMTP server previously specified in register_email_settings().
Parameters:
Name | Type | Description | Default |
---|---|---|---|
subject
|
str
|
The subject of the email. |
required |
body
|
str
|
The body of the email. This argument can be one of 4 things: 1. A string containing the HTML body of the email 2. A string containing the path to an HTML file to read the body from 3. A string containing the text body of the email 4. A string containing the path to an text file to read the body from |
required |
test_mode
|
bool
|
If True, the email will not be sent, but a message will be logged indicating that the email would have been sent. Defaults to False. |
False
|
Returns:
Name | Type | Description |
---|---|---|
result |
bool
|
True if the email was sent successfully, False otherwise. |
set_fatal_error(message)
Create a fatal error tracking file and write the message to it.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
message
|
str
|
The error message to write to the fatal error file. |
required |
trim_logfile()
Trims the log file to the maximum number of lines specified.