# Log 框架 设计

Log 日志框架，从使用者角度 有两个部分，配置和接口。

# 接口设计 

支持五种级别的日志打印，ERROR/WARN/INFO/DEBUG
支持日志命名空间隔离

# 配置设计

支持对每个命名空间的日志，级别选择
支持对每个命名空间的日志，配置输出目标
支出输出目标到控制台 和 文件
支持日志格式控制  （级别，线程，命名空间，消息，时间）

实现：

1. LoggerFactory 按命名空间创建Logger
2. Logger 按级别打印日志，把日志封装成LogMessage
3. LoggerTarget  控制日志的输出目标，关联Logger
4. LoggerFormat 控制日志的输出格式，关联Target，Format格式化LogMessage
5. LoggerConfig，其中包括Target和Logger的关联，Logger和Format的关联，Format的初始化

Q1： LogMessage 如果把很多信息都保存下来，那么每次创建Message耗费大量内存
A1： 对于同一个Logger，相同的信息可以缓存下来，LogMessage只是持有引用。

Q2:   Logger 打印如果提高性能，避免同步打印
A2:   打印文件可以设置buffer，然后单独进行刷；或者设计ringbuffer； 或者增加异步的Target，也就是输出线程和打印线程分离。


