Metadata-Version: 2.1
Name: arcor2-logger
Version: 0.2.0
Summary: ARCOR2 Logger service.
Author: Robo@FIT
Author-email: imaterna@fit.vut.cz
License: LGPL
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
Classifier: Programming Language :: Python :: 3.11
Classifier: Natural Language :: English
Classifier: Topic :: Scientific/Engineering
Requires-Python: ==3.11.*
Description-Content-Type: text/markdown
Requires-Dist: aiologger (~=0.7.0)
Requires-Dist: aiorun (~=2023.7.2)
Requires-Dist: arcor2 (~=1.3.0)
Requires-Dist: dataclasses-jsonschema[apispec,fast-dateparsing,fast-validation] (~=2.16.0)
Requires-Dist: websocket-client (~=1.7.0)
Requires-Dist: websockets (~=12.0)

# arcor2_logger

The service provides logging capabilities through the network. Logging-related methods are added to ObjectTypes using a mixin class.

- Messages are sent using the websockets protocol.
- Calls to `log_` methods are non-blocking.

## Example usage

```python
from typing import Optional

from arcor2.object_types.abstract import Generic, Settings

try:
    from .logging_mixin import LoggingMixin  # this is used within an execution package
except ImportError:
    from arcor2_logger.object_types.logging_mixin import LoggingMixin  # this is used during development
    
class MyObject(LoggingMixin, Generic):

    _ABSTRACT = False

    def __init__(self, obj_id: str, name: str, settings: Optional[Settings] = None) -> None:
        super().__init__(obj_id, name, settings)
        self.logger = self.get_logger()
        self.logger.info("Initialized.")
```

## Environment variables

- `ARCOR2_LOGGER_URL=ws://0.0.0.0:8765` - by default, the service listens on port 8765.
- `ARCOR2_LOGGER_LEVEL=info` - by default, messages from objects with level `info` and higher are logged.
  - Other possible values are `warning`, `error` and `debug`. 
- `ARCOR2_LOGGER_DEBUG=1` - switches logger to the `DEBUG` level.
- `ARCOR2_LOGGER_ASYNCIO_DEBUG=1` - turns on `asyncio` debug output (helpful to debug problems related to concurrency).
# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

## [0.2.0] - 2024-04-11

### Changed

- Updated dependencies, switched to Python 3.11.

## [0.1.0] - 2022-10-28

### Changed
- First version of the package.
