# kingkybel-pyflashlogger
Advanced console logging with color support and minimal configuration interface.
## Features
- ๐จ **Color-Coded Logging**: Automatic ANSI color coding for different log levels with flexible configuration
- ๐ท๏ธ **Custom Log Levels**: Support for custom log levels with configurable labels and fixed numeric assignments
- ๐ **Minimal Interface**: Simple API for logging without complex setup
- ๐ **Special Color Support**: Configurable colors for timestamps, process IDs, brackets, operators, etc.
- ๐ **Field Ordering**: Base class configurable field ordering (level, timestamp, pid, tid, message) for all log channels
- ๐พ **JSON Configuration**: Save and load color/label configurations
- ๐ **Multiple Channels**: Console and file logging implementations with unified configuration
- ๐งช **Format Flexibility**: Different formats for standard logs, commands, and std streams
- ๐ค **Output Formats**: Multiple output formats (Human readable, JSON pretty, JSON lines) available to all channels with runtime switching
- ๐ง **Runtime Configuration**: Dynamically set color schemes and output formats at runtime for individual channels or all channels
- ๐ **Structured JSON Output**: Automatic parsing of message arguments into JSON with support for direct object serialization
- ๐ฏ **Enhanced ColorScheme API**: Flexible color retrieval supporting LogLevel enums, Field enums, and string keys
- โ
**Comprehensive Testing**: Full test coverage including all new functionality
## Installation
```bash
pip install kingkybel-pyflashlogger
```
Or from source:
```bash
git clone https://github.com/kingkybel/FlashLogger.git
cd FlashLogger
pip install -e .
```
## Tools
FlashLogger includes interactive configuration tools:
### Color & Label Configurator (`tools/color_configurator.py`)
Interactive tool for customizing logging colors and labels with live preview:
```bash
cd tools
python color_configurator.py # Use default configs
python color_configurator.py colors.json labels.json # Load custom configs
# Interactive commands:
# 4 RED _ DIM # Change WARNING level colors
# load labels DE # Switch to German labels
# s # Save configuration
# q # Quit
```
**Features:**
- Visual preview of all colors and levels
- Tab completion for color names
- Load/save configurations
- Support for predefined schemes (COLOR, BW, PLAIN)
- International label support (EN, DE)
### Logger Testing Tool (`tools/try_out_logger.py`)
Sample script demonstrating FlashLogger capabilities with runtime configuration:
```bash
python tools/try_out_logger.py
```
Shows examples of:
- Runtime color scheme changes
- Output format switching
- Structured JSON output
- Custom log levels
## Quick Start
```python
from flashlogger import FlashLogger, ColorScheme, LogLevel
# Basic usage
logger = FlashLogger()
logger.log_info("This is an info message")
logger.log_warning("This is a warning")
# With custom colors
scheme = ColorScheme.default_color_scheme()
console_logger = FlashLogger(console=scheme)
console_logger.log_error("Colorized error message")
# Custom log levels
logger.log_custom0("Custom level message")
```
## Advanced Usage
### Runtime Color Scheme Configuration
```python
from flashlogger import ColorScheme, LogChannelConsole
# Create logger with initial scheme
logger = FlashLogger()
channel = logger.get_channel(LogChannelConsole.__name__)
# Dynamically change color schemes at runtime
channel.set_color_scheme(ColorScheme.Default.BLACK_AND_WHITE)
logger.set_color_scheme(ColorScheme.Default.COLOR) # Affects all channels
# Use custom color schemes
custom_scheme = ColorScheme(color_scheme_json="my_colors.json")
channel.set_color_scheme(custom_scheme)
```
### Runtime Output Format Configuration
```python
from flashlogger import FlashLogger, OutputFormat
logger = FlashLogger()
# Set output format for all channels
logger.set_output_format(OutputFormat.JSON_PRETTY)
# Set format for individual channels
channel = logger.get_channel('LogChannelConsole')
channel.set_output_format('JSON_LINES') # Override for this channel
# JSON output now includes structured arguments
logger.log_info("Simple message", {"complex": "data"}, arg1="value")
# Output: {"timestamp": "...", "level": "info", "message": "Simple message",
# "message0": {"complex": "data"}, "arg1": "value"}
```
### Structured JSON Output
FlashLogger automatically structures logging arguments for JSON output:
```python
# Dict as first argument gets merged directly (no "message" wrapper)
logger.log_custom0({"user_id": 123, "action": "login"})
# JSON: {"user_id": 123, "action": "login", "level": "custom0", ...}
# Multiple args get indexed as message0, message1, etc.
logger.log_info("Operation", completed=True, duration=1.5)
# JSON: {"message": "Operation", "message0": true, "duration": 1.5, "level": "info", ...}
```
### Enhanced ColorScheme API
```python
from flashlogger import ColorScheme, LogLevel
from flashlogger.color_scheme import Field
scheme = ColorScheme(ColorScheme.Default.COLOR)
# Flexible color retrieval methods
color_str = scheme.get("warning") # String key
color_enum = scheme.get(LogLevel.WARNING) # LogLevel enum
field_color = scheme.get(Field.TIMESTAMP) # Field enum
# With style and inverse options
bright_color = scheme.get("error", style=Style.BRIGHT)
inverse_color = scheme.get("debug", inverse=True)
```
### Color Configuration
```python
from flashlogger import ColorScheme
# Load predefined schemes
color_scheme = ColorScheme(ColorScheme.Default.COLOR)
bw_scheme = ColorScheme(ColorScheme.Default.BLACK_AND_WHITE)
# Create custom scheme from JSON
custom_scheme = ColorScheme(color_scheme_json="my_colors.json")
# Runtime color customization
scheme.set_level_color(LogLevel.WARNING, foreground="RED", background="YELLOW")
```
### Field Ordering
```python
# Customize log field display order
scheme.field_order = ["level", "timestamp", "message"] # Omit pid/tid
logger = FlashLogger(console=scheme)
# Output: [WARNING] [2025-10-26 00:00:00.000] This is a message
```
### Custom Labels
```python
from flashlogger import LogLevel
# Define custom labels
LogLevel.set_str_repr(LogLevel.custom0, "NETWORK_IO")
LogLevel.set_str_repr(LogLevel.custom1, "DB_QUERY")
logger = FlashLogger()
logger.log_custom0("Network I/O operation") # Shows as "NETWORK_IO"
```
## Log Levels
- **DEBUG**: Debugging information
- **INFO**: General information
- **WARNING**: Warning conditions
- **ERROR**: Error conditions
- **FATAL**: Fatal errors
- **CRITICAL**: Critical conditions
- **COMMAND**: Command execution
- **COMMAND_OUTPUT**: Command stdout capture
- **COMMAND_STDERR**: Command stderr capture
- **CUSTOM0-9**: Custom user-defined levels
## Configuration Files
FlashLogger includes default configuration files for color schemes and log level labels:
- `color_scheme_color.json`: Full color scheme
- `color_scheme_bw.json`: Black and white scheme
- `log_levels_en.json`: English log level labels
- `log_levels_de.json`: German log level labels
## Channels
### Console Channel
```python
from flashlogger import LogChannelConsole
channel = LogChannelConsole(color_scheme=my_scheme, minimum_log_level="WARNING")
channel.do_log("ERROR", "This error will be logged")
```
### File Channel
```python
from flashlogger import LogChannelFile
channel = LogChannelFile(filename="app.log")
channel.do_log("INFO", "This goes to file")
```
## Custom Channels
Extend `LogChannelABC` for custom logging destinations:
```python
from flashlogger import LogChannelABC
class MyChannel(LogChannelABC):
def do_log(self, log_level, *args, **kwargs):
# Your custom logging logic
pass
```
## API Reference
### FlashLogger
- **Logging Methods**:
- `log_debug(message)`: Log debug message
- `log_info(message)`: Log info message
- `log_warning(message)`: Log warning message
- `log_error(message)`: Log error message
- `log_fatal(message)`: Log fatal error
- `log_custom0(message)`: Log custom level 0-9
- **Runtime Configuration**:
- `set_output_format(format)`: Set output format for all channels
- `set_color_scheme(scheme)`: Set color scheme for all channels
- `add_channel(channel)`: Add a log channel with duplicate prevention
- `get_channel(selector)`: Get channel by ID, name, or instance
### OutputFormat
- `HUMAN_READABLE`: Default human-readable format
- `JSON_PRETTY`: Pretty-printed JSON with indentation
- `JSON_LINES`: Compact single-line JSON
### ColorScheme
- Constructor: `ColorScheme(default_scheme_or_path)`
- Methods:
- `get(level, inverse=False, style=None)`: Get colors for LogLevel, Field, or string
- `save_to_json(path)`: Save configuration to JSON
- `set_level_color(level, foreground, background)`: Runtime color customization
### LogChannelABC
- Methods:
- `set_output_format(format)`: Set output format for this channel
- `is_loggable(level)`: Check if level is loggable
- `do_log(level, *args, **kwargs)`: Log a message
### LogChannelConsole
- Inherits from LogChannelABC
- Methods:
- `set_color_scheme(scheme)`: Set color scheme for console output
- `set_output_format(format)`: Set output format with formatter updates
- `set_level_color(level, foreground, background)`: Runtime level color changes
### LogLevel
- Standard levels: `DEBUG`, `INFO`, `WARNING`, etc.
- Custom levels: `CUSTOM0` through `CUSTOM9` (with fixed numeric assignments)
- Methods: `set_str_repr(level, label)`, `load_str_reprs_from_json(path)`
## License
GPLv2 - See the LICENSE file for details.
## Contributing
Contributions welcome! Please open issues for bugs or feature requests.
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
Raw data
{
"_id": null,
"home_page": "https://github.com/kingkybel/PyFlashLogger",
"name": "kingkybel-pyflashlogger",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Dieter J Kybelksties <github@kybelksties.com>",
"keywords": "logging, console, color, ansi, configuration",
"author": "Dieter J Kybelksties",
"author_email": "Dieter J Kybelksties <github@kybelksties.com>",
"download_url": "https://files.pythonhosted.org/packages/f7/59/702483453b59ecf0aff706623ad54303c0c2908046f1f3efa9a13326405a/kingkybel_pyflashlogger-2.0.0.tar.gz",
"platform": null,
"description": "# kingkybel-pyflashlogger\n\nAdvanced console logging with color support and minimal configuration interface.\n\n## Features\n\n- \ud83c\udfa8 **Color-Coded Logging**: Automatic ANSI color coding for different log levels with flexible configuration\n- \ud83c\udff7\ufe0f **Custom Log Levels**: Support for custom log levels with configurable labels and fixed numeric assignments\n- \ud83d\udd04 **Minimal Interface**: Simple API for logging without complex setup\n- \ud83c\udf08 **Special Color Support**: Configurable colors for timestamps, process IDs, brackets, operators, etc.\n- \ud83d\udccb **Field Ordering**: Base class configurable field ordering (level, timestamp, pid, tid, message) for all log channels\n- \ud83d\udcbe **JSON Configuration**: Save and load color/label configurations\n- \ud83d\udd17 **Multiple Channels**: Console and file logging implementations with unified configuration\n- \ud83e\uddea **Format Flexibility**: Different formats for standard logs, commands, and std streams\n- \ud83d\udce4 **Output Formats**: Multiple output formats (Human readable, JSON pretty, JSON lines) available to all channels with runtime switching\n- \ud83d\udd27 **Runtime Configuration**: Dynamically set color schemes and output formats at runtime for individual channels or all channels\n- \ud83d\udcca **Structured JSON Output**: Automatic parsing of message arguments into JSON with support for direct object serialization\n- \ud83c\udfaf **Enhanced ColorScheme API**: Flexible color retrieval supporting LogLevel enums, Field enums, and string keys\n- \u2705 **Comprehensive Testing**: Full test coverage including all new functionality\n\n## Installation\n\n```bash\npip install kingkybel-pyflashlogger\n```\n\nOr from source:\n```bash\ngit clone https://github.com/kingkybel/FlashLogger.git\ncd FlashLogger\npip install -e .\n```\n\n## Tools\n\nFlashLogger includes interactive configuration tools:\n\n### Color & Label Configurator (`tools/color_configurator.py`)\n\nInteractive tool for customizing logging colors and labels with live preview:\n\n```bash\ncd tools\npython color_configurator.py # Use default configs\npython color_configurator.py colors.json labels.json # Load custom configs\n\n# Interactive commands:\n# 4 RED _ DIM # Change WARNING level colors\n# load labels DE # Switch to German labels\n# s # Save configuration\n# q # Quit\n```\n\n**Features:**\n- Visual preview of all colors and levels\n- Tab completion for color names\n- Load/save configurations\n- Support for predefined schemes (COLOR, BW, PLAIN)\n- International label support (EN, DE)\n\n### Logger Testing Tool (`tools/try_out_logger.py`)\n\nSample script demonstrating FlashLogger capabilities with runtime configuration:\n\n```bash\npython tools/try_out_logger.py\n```\n\nShows examples of:\n- Runtime color scheme changes\n- Output format switching\n- Structured JSON output\n- Custom log levels\n\n## Quick Start\n\n```python\nfrom flashlogger import FlashLogger, ColorScheme, LogLevel\n\n# Basic usage\nlogger = FlashLogger()\nlogger.log_info(\"This is an info message\")\nlogger.log_warning(\"This is a warning\")\n\n# With custom colors\nscheme = ColorScheme.default_color_scheme()\nconsole_logger = FlashLogger(console=scheme)\nconsole_logger.log_error(\"Colorized error message\")\n\n# Custom log levels\nlogger.log_custom0(\"Custom level message\")\n```\n\n## Advanced Usage\n\n### Runtime Color Scheme Configuration\n```python\nfrom flashlogger import ColorScheme, LogChannelConsole\n\n# Create logger with initial scheme\nlogger = FlashLogger()\nchannel = logger.get_channel(LogChannelConsole.__name__)\n\n# Dynamically change color schemes at runtime\nchannel.set_color_scheme(ColorScheme.Default.BLACK_AND_WHITE)\nlogger.set_color_scheme(ColorScheme.Default.COLOR) # Affects all channels\n\n# Use custom color schemes\ncustom_scheme = ColorScheme(color_scheme_json=\"my_colors.json\")\nchannel.set_color_scheme(custom_scheme)\n```\n\n### Runtime Output Format Configuration\n```python\nfrom flashlogger import FlashLogger, OutputFormat\n\nlogger = FlashLogger()\n\n# Set output format for all channels\nlogger.set_output_format(OutputFormat.JSON_PRETTY)\n\n# Set format for individual channels\nchannel = logger.get_channel('LogChannelConsole')\nchannel.set_output_format('JSON_LINES') # Override for this channel\n\n# JSON output now includes structured arguments\nlogger.log_info(\"Simple message\", {\"complex\": \"data\"}, arg1=\"value\")\n# Output: {\"timestamp\": \"...\", \"level\": \"info\", \"message\": \"Simple message\",\n# \"message0\": {\"complex\": \"data\"}, \"arg1\": \"value\"}\n```\n\n### Structured JSON Output\nFlashLogger automatically structures logging arguments for JSON output:\n\n```python\n# Dict as first argument gets merged directly (no \"message\" wrapper)\nlogger.log_custom0({\"user_id\": 123, \"action\": \"login\"})\n# JSON: {\"user_id\": 123, \"action\": \"login\", \"level\": \"custom0\", ...}\n\n# Multiple args get indexed as message0, message1, etc.\nlogger.log_info(\"Operation\", completed=True, duration=1.5)\n# JSON: {\"message\": \"Operation\", \"message0\": true, \"duration\": 1.5, \"level\": \"info\", ...}\n```\n\n### Enhanced ColorScheme API\n```python\nfrom flashlogger import ColorScheme, LogLevel\nfrom flashlogger.color_scheme import Field\n\nscheme = ColorScheme(ColorScheme.Default.COLOR)\n\n# Flexible color retrieval methods\ncolor_str = scheme.get(\"warning\") # String key\ncolor_enum = scheme.get(LogLevel.WARNING) # LogLevel enum\nfield_color = scheme.get(Field.TIMESTAMP) # Field enum\n\n# With style and inverse options\nbright_color = scheme.get(\"error\", style=Style.BRIGHT)\ninverse_color = scheme.get(\"debug\", inverse=True)\n```\n\n### Color Configuration\n```python\nfrom flashlogger import ColorScheme\n\n# Load predefined schemes\ncolor_scheme = ColorScheme(ColorScheme.Default.COLOR)\nbw_scheme = ColorScheme(ColorScheme.Default.BLACK_AND_WHITE)\n\n# Create custom scheme from JSON\ncustom_scheme = ColorScheme(color_scheme_json=\"my_colors.json\")\n\n# Runtime color customization\nscheme.set_level_color(LogLevel.WARNING, foreground=\"RED\", background=\"YELLOW\")\n```\n\n### Field Ordering\n```python\n# Customize log field display order\nscheme.field_order = [\"level\", \"timestamp\", \"message\"] # Omit pid/tid\nlogger = FlashLogger(console=scheme)\n\n# Output: [WARNING] [2025-10-26 00:00:00.000] This is a message\n```\n\n### Custom Labels\n```python\nfrom flashlogger import LogLevel\n\n# Define custom labels\nLogLevel.set_str_repr(LogLevel.custom0, \"NETWORK_IO\")\nLogLevel.set_str_repr(LogLevel.custom1, \"DB_QUERY\")\n\nlogger = FlashLogger()\nlogger.log_custom0(\"Network I/O operation\") # Shows as \"NETWORK_IO\"\n```\n\n## Log Levels\n\n- **DEBUG**: Debugging information\n- **INFO**: General information\n- **WARNING**: Warning conditions\n- **ERROR**: Error conditions\n- **FATAL**: Fatal errors\n- **CRITICAL**: Critical conditions\n- **COMMAND**: Command execution\n- **COMMAND_OUTPUT**: Command stdout capture\n- **COMMAND_STDERR**: Command stderr capture\n- **CUSTOM0-9**: Custom user-defined levels\n\n## Configuration Files\n\nFlashLogger includes default configuration files for color schemes and log level labels:\n\n- `color_scheme_color.json`: Full color scheme\n- `color_scheme_bw.json`: Black and white scheme\n- `log_levels_en.json`: English log level labels\n- `log_levels_de.json`: German log level labels\n\n## Channels\n\n### Console Channel\n```python\nfrom flashlogger import LogChannelConsole\n\nchannel = LogChannelConsole(color_scheme=my_scheme, minimum_log_level=\"WARNING\")\nchannel.do_log(\"ERROR\", \"This error will be logged\")\n```\n\n### File Channel\n```python\nfrom flashlogger import LogChannelFile\n\nchannel = LogChannelFile(filename=\"app.log\")\nchannel.do_log(\"INFO\", \"This goes to file\")\n```\n\n## Custom Channels\n\nExtend `LogChannelABC` for custom logging destinations:\n\n```python\nfrom flashlogger import LogChannelABC\n\nclass MyChannel(LogChannelABC):\n def do_log(self, log_level, *args, **kwargs):\n # Your custom logging logic\n pass\n```\n\n## API Reference\n\n### FlashLogger\n- **Logging Methods**:\n - `log_debug(message)`: Log debug message\n - `log_info(message)`: Log info message\n - `log_warning(message)`: Log warning message\n - `log_error(message)`: Log error message\n - `log_fatal(message)`: Log fatal error\n - `log_custom0(message)`: Log custom level 0-9\n- **Runtime Configuration**:\n - `set_output_format(format)`: Set output format for all channels\n - `set_color_scheme(scheme)`: Set color scheme for all channels\n - `add_channel(channel)`: Add a log channel with duplicate prevention\n - `get_channel(selector)`: Get channel by ID, name, or instance\n\n### OutputFormat\n- `HUMAN_READABLE`: Default human-readable format\n- `JSON_PRETTY`: Pretty-printed JSON with indentation\n- `JSON_LINES`: Compact single-line JSON\n\n### ColorScheme\n- Constructor: `ColorScheme(default_scheme_or_path)`\n- Methods:\n - `get(level, inverse=False, style=None)`: Get colors for LogLevel, Field, or string\n - `save_to_json(path)`: Save configuration to JSON\n - `set_level_color(level, foreground, background)`: Runtime color customization\n\n### LogChannelABC\n- Methods:\n - `set_output_format(format)`: Set output format for this channel\n - `is_loggable(level)`: Check if level is loggable\n - `do_log(level, *args, **kwargs)`: Log a message\n\n### LogChannelConsole\n- Inherits from LogChannelABC\n- Methods:\n - `set_color_scheme(scheme)`: Set color scheme for console output\n - `set_output_format(format)`: Set output format with formatter updates\n - `set_level_color(level, foreground, background)`: Runtime level color changes\n\n### LogLevel\n- Standard levels: `DEBUG`, `INFO`, `WARNING`, etc.\n- Custom levels: `CUSTOM0` through `CUSTOM9` (with fixed numeric assignments)\n- Methods: `set_str_repr(level, label)`, `load_str_reprs_from_json(path)`\n\n## License\n\nGPLv2 - See the LICENSE file for details.\n\n## Contributing\n\nContributions welcome! Please open issues for bugs or feature requests.\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests if applicable\n5. Submit a pull request\n",
"bugtrack_url": null,
"license": "GPLv2",
"summary": "Advanced console logging with color support and minimal configuration interface",
"version": "2.0.0",
"project_urls": {
"Changelog": "https://github.com/kingkybel/PyFlashLogger/blob/main/CHANGELOG.md",
"Documentation": "https://github.com/kingkybel/PyFlashLogger#readme",
"Homepage": "https://github.com/kingkybel/PyFlashLogger",
"Issues": "https://github.com/kingkybel/PyFlashLogger/issues",
"Repository": "https://github.com/kingkybel/PyFlashLogger"
},
"split_keywords": [
"logging",
" console",
" color",
" ansi",
" configuration"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "fa58a1faaacc75e71493d94d751d758e8abc7553f4d7bc977d4dbe31cc6455fc",
"md5": "96933361f2adcc1a1a127d6b6b80e433",
"sha256": "480b99df67fca031a0f7254322fcf9507f4a6f15b51cc5c03b9898d9072307c6"
},
"downloads": -1,
"filename": "kingkybel_pyflashlogger-2.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "96933361f2adcc1a1a127d6b6b80e433",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 30503,
"upload_time": "2025-11-02T18:46:37",
"upload_time_iso_8601": "2025-11-02T18:46:37.563458Z",
"url": "https://files.pythonhosted.org/packages/fa/58/a1faaacc75e71493d94d751d758e8abc7553f4d7bc977d4dbe31cc6455fc/kingkybel_pyflashlogger-2.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f759702483453b59ecf0aff706623ad54303c0c2908046f1f3efa9a13326405a",
"md5": "41782e8d70cef02eb9969ba9d45283d9",
"sha256": "507542b96c85af9954cb7283f5c0974bf24daebc13ab87528965c5ea57505ab2"
},
"downloads": -1,
"filename": "kingkybel_pyflashlogger-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "41782e8d70cef02eb9969ba9d45283d9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 39968,
"upload_time": "2025-11-02T18:46:38",
"upload_time_iso_8601": "2025-11-02T18:46:38.693858Z",
"url": "https://files.pythonhosted.org/packages/f7/59/702483453b59ecf0aff706623ad54303c0c2908046f1f3efa9a13326405a/kingkybel_pyflashlogger-2.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-02 18:46:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kingkybel",
"github_project": "PyFlashLogger",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "colorama",
"specs": [
[
">=",
"0.4.6"
]
]
},
{
"name": "Pygments",
"specs": [
[
">=",
"2.19.2"
]
]
},
{
"name": "setuptools",
"specs": [
[
">=",
"80.9.0"
]
]
},
{
"name": "kingkybel-pyfundamentals",
"specs": [
[
">=",
"0.1.1"
]
]
}
],
"lcname": "kingkybel-pyflashlogger"
}