rusty-logger 0.3.0

Creator: bigcodingguy24

Last updated:

Add to Cart

Description:

rustylogger 0.3.0

Rusty Logger
Simple, opinionated and blazingly fast python logging. Rusty-Logger is a thin python wrapper for Rust's tracing library that provides a mostly drop-in replacement for pythons default logging.
Table of contents

Supported configuration
Constraints
Additional metadata
Code examples
Additional examples
Performance
Contributing

Supported Configuration



Arg
Description
Default




stdout
Log to stdout
True


stderr
Log to stderr
False


level
Level to log
INFO


app_env
Application environment (APP_ENV env var)
development


lock_guard
Whether to lock logger to current context
False


thread_id
Whether to display the thread id
False


color
Whether to enable ansi coloring of logs for standard logger
False


time_format
Custom time format for logger
[year]-[month]-[day]T[hour repr:24]:[minute]:[second]::[subsecond digits:4]


json_config
JsonConig
None


json_config.flatten
Whether to flatten any passed fields
True


file_config
LogFileConfig
None


file_config.filename
Filename for log
log/logs.log


file_config.rotate
File rotation specification. daily, hourly, minutely or never
never



Constraints
Time is currently limited to UTC; however, you can customize time format to your liking using the time_format arg. Please refer to (time docs)[https://time-rs.github.io/book/api/format-description.html] for formatting guidelines. In addition, because Rusty-Logger calls Rust directly, it's not currently possible to pull the specific line number where logging takes place unless python is directly used (if you're even interested in this feature :smile:). If you'd like to see this feature implemented, and you want to contribute, please refer to the contributing guide.
In addition, Rusty-Logger is a mostly drop-in replacement, meaning that you may need to make some minor changes to your existing code. For example, Rusty-Logger does not support current python lazy formatting (e.g. logger.info("Number: %s", 10)). Instead, Rusty-Logger uses Rust's default bracket ({}) formatting.
# This is not supported
logger.info("Number: %s", 10)

# This is supported
logger.info("Number: {}", 10)

Show Me The Code!
Basic Usage
from rusty_logger import Logger

logger = Logger.get_logger(__file__)
logger.info("Loggy McLogface")

output
2023-10-18T00:11:43::3194 INFO Loggy McLogface app_env="development" name="your_file.py"

JSON
from rusty_logger import Logger, LogConfig, JsonConfig

logger = Logger.get_logger(__file__, LogConfig(json_config=JsonConfig()))
logger.info("Loggy McLogface logs")

output
{"timestamp":"2023-10-18T00:10:59::9732","level":"INFO","message":"Loggy McLogface logs","app_env":"development","name":"your_file.py"}

Log to file
from rusty_logger import Logger, LogConfig, JsonConfig, LogLevel, LogFileConfig

logger = Logger.get_logger(
name=__file__,
config=LogConfig(
stdout=False,
level=LogLevel.WARN,
json_config=JsonConfig(),
file_config=LogFileConfig(filename="logs/test.log"),
),
)
logger.warning("Loggy McLogface logs logs")

output from log/test.log
{"timestamp":"2023-10-18T00:10:10::9364","level":"WARN","message":"Loggy McLogface logs logs","app_env":"development","name":"your_file.py"}

Record multiple places at once
from rusty_logger import Logger, LogConfig, JsonConfig, LogMetadata, LogLevel, LogFileConfig

logger = Logger.get_logger(
__file__,
LogConfig(
stdout=True,
level=LogLevel.ERROR,
json_config=JsonConfig(),
file_config=LogFileConfig(filename="logs/test.log")
),
)
logger.error("Loggy McLogface logs logs that are logs")

output
{"timestamp":"2023-10-18T00:09:32::4053","level":"ERROR","message":"Loggy McLogface logs logs that are logs","app_env":"development","name":"your_file.py"}

Additional examples
For additional examples, please see the examples directory which contains timed example of vanilla logger vs Rusty-Logger, python-json-logger vs Rusty-Logger as well as a multi-worker API example.
Performance
Why would we do this when python logging is fine? Because we wanted something faster :smile:. From our own benchmarks, Rusty-Logger tends to be ~4x faster than vanilla python logging and ~8x faster than vanilla JSON logging. And while speed may not be mission critical for a few thousands logs, it can be for millions, which many companies deal with on a daily basis. Time is money and compute, and we want to save you both :moneybag: :computer:.
Contributing
While Rusty-Logger is production ready out of the box, it is still in it's infancy and is ripe for additional contributions. If you'd like to contribute, please see the contributing guide.
Thank You!!! :heart: :heart: :heart:

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.