# Juliet\include\Core\Logging\LogManager

## Source Files
- Header: `Juliet\include\Core\Logging\LogManager.h`
- Source: `Juliet\src\Core\Logging\LogManager.cpp`

## AI Description
The `LogManager` component in the Juliet library is designed to manage and output log messages. It provides a flexible framework for logging at different levels (Debug, Message, Warning, Error) with categories to categorize logs based on their importance. The component uses an arena-based memory management system to efficiently allocate and deallocate memory for log entries. Logs are accumulated in scopes until the scope is ended, which then writes them to a file or other output destination. The `LogManager` also includes functions to initialize and shutdown the logging system, as well as to log messages with specific levels and categories.

## Symbols

### Namespace `Juliet`

#### Enums
- `enum class LogLevel`
- `enum class LogCategory`

#### Functions & Methods
- `extern void JULIET_API InitializeLogManager()`
- `extern void JULIET_API ShutdownLogManager()`
- `extern void JULIET_API LogScopeBegin()`
- `// TODO everything that happened in there to export them to file or something
    extern void JULIET_API LogScopeEnd()`
- `extern void JULIET_API Log(LogLevel level, LogCategory category, const char* fmt, ...)`
- `extern void JULIET_API LogDebug(LogCategory category, const char* fmt, ...)`
- `extern void JULIET_API LogMessage(LogCategory category, const char* fmt, ...)`
- `extern void JULIET_API LogWarning(LogCategory category, const char* fmt, ...)`
- `extern void JULIET_API LogError(LogCategory category, const char* fmt, ...)`

