# Loggur
시각적으로 풍부한 Rust 로깅 크레이트입니다. tracing 생태계와 통합되어 구조화된 로깅과 진행 상태 표시 기능을 제공합니다.
## 특징
- [tracing](https://crates.io/crates/tracing) 생태계와 완벽하게 통합
- [tracing-indicatif](https://crates.io/crates/tracing-indicatif)를 활용한 자동 진행 상태 표시
- 다양한 로그 레벨 지원 (TRACE, DEBUG, INFO, WARN, ERROR)
- 컬러 및 스타일링된 로그 출력
- 이모지 지원
- 파일 로깅 지원
- 구조화된 로깅 (필드 기반)
- span 기반 컨텍스트 추적
- 시간 측정 및 표시 기능
## 설치 방법
`Cargo.toml` 파일에 다음 의존성을 추가하세요:
```toml
[dependencies]
loggur = "0.1.0"
```
또는 cargo 명령어를 사용하세요:
```bash
cargo add loggur
```
## 기본 사용법
### 로거 초기화 및 기본 로깅
```rust
use loggur::{Loggur, Level, info, debug, warn, error};
// 기본 로거 초기화
Loggur::init(Level::DEBUG);
// 다양한 로그 레벨 사용
debug!("디버그 메시지입니다");
info!("정보 메시지입니다");
warn!("경고 메시지입니다");
error!("오류 메시지입니다");
// 구조화된 로깅
info!(user = "ferris", action = "login", "사용자가 로그인했습니다");
```
### 파일 로깅
```rust
use loggur::{Loggur, Level, info, error};
// 파일 로깅 초기화
let _guard = Loggur::init_with_file(Level::INFO, "./app.log");
// 콘솔과 파일 모두에 로깅
info!("이 메시지는 콘솔과 파일 모두에 기록됩니다");
error!("이 오류는 콘솔과 파일 모두에 기록됩니다");
```
### span 및 진행 상태 표시
```rust
use loggur::{Loggur, Level, info, progress_span, progress_inc};
// 진행 상태 표시 기능 초기화
Loggur::init_with_progress(Level::INFO);
// 진행 상태 표시 span 생성
let total_items = 100;
let span = progress_span!("작업 진행", total_items);
let _enter = span.enter();
for i in 0..total_items {
// 작업 수행
// ...
// 진행 상태 업데이트
progress_inc!(1);
if i % 10 == 0 {
info!("진행 중: {}/{}", i, total_items);
}
}
```
### 시간 측정
```rust
use loggur::{Loggur, Level, info, time_it};
// 로거 초기화
Loggur::init(Level::INFO);
// 코드 블록 실행 시간 측정
time_it!("복잡한 계산", {
// 복잡한 계산 수행
// ...
});
```
## 고급 사용법
### 모든 기능 통합 초기화
```rust
use loggur::{Loggur, Level};
// 콘솔 로깅, 파일 로깅, 진행 상태 표시 모두 초기화
let _guard = Loggur::init_full(Level::DEBUG, Some("./app.log"));
```
### 환경 변수를 통한 로그 레벨 제어
`RUST_LOG` 환경 변수를 설정하여 로그 레벨을 제어할 수 있습니다:
```bash
# 전체 로그 레벨 설정
RUST_LOG=info cargo run
# 특정 모듈의 로그 레벨 설정
RUST_LOG=debug,my_module=trace cargo run
```
## 예제
더 많은 예제는 [examples](https://github.com/username/loggur/tree/main/examples) 디렉토리에서 확인할 수 있습니다:
- [basic_usage.rs](https://github.com/username/loggur/blob/main/examples/basic_usage.rs) - 기본 로깅 예제
- [file_logging.rs](https://github.com/username/loggur/blob/main/examples/file_logging.rs) - 파일 로깅 예제
- [progress_bars.rs](https://github.com/username/loggur/blob/main/examples/progress_bars.rs) - 진행 상태 표시 예제
- [tracing_indicatif_demo.rs](https://github.com/username/loggur/blob/main/examples/tracing_indicatif_demo.rs) - tracing-indicatif 통합 예제
## 라이센스
MIT