# base-log-factory

> A flexible and simple JS logging library that allows logging or collecting logs in different environments by configuring various Appenders. Suitable for browser, NodeJS and other environments.

Latest version **3.0.0** (published 2025-05-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install base-log-factory
pnpm add base-log-factory
yarn add base-log-factory
bun add base-log-factory
```

## Health

**Score 40/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.0 |
| Published | 2025-05-11 |
| First published | 2024-03-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 39.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Jesse Feng |
| Maintainers | fengxinming |
| Keywords | log, logging, log4j |

## Links

- npm: https://www.npmjs.com/package/base-log-factory
- Repository: https://github.com/fengxinming/base-log-factory
- Homepage: https://fengxinming.github.io/base-log-factory/
- Issues: https://github.com/fengxinming/base-log-factory/issues
- npm.io page: https://npm.io/package/base-log-factory

## Dependencies (2)

- [date-manip](https://npm.io/package/date-manip.md) ^2.0.6
- [is-what-type](https://npm.io/package/is-what-type.md) ^1.0.1

## Alternatives

- [cli-color](https://npm.io/package/cli-color.md) — 3.4M weekly downloads
- [log](https://npm.io/package/log.md) — 1.3M weekly downloads
- [logstash-client](https://npm.io/package/logstash-client.md) — 4.5K weekly downloads
- [@nocobase/plugin-logger](https://npm.io/package/@nocobase/plugin-logger.md) — 2.0K weekly downloads
- [child-process-debug](https://npm.io/package/child-process-debug.md) — 695 weekly downloads

## Recent versions

- 3.0.0 (latest) — 2025-05-11
- 2.1.4 — 2025-05-06
- 2.1.3 — 2025-05-06
- 2.1.2 — 2025-04-18
- 2.1.1 — 2025-04-05
- 2.1.0 — 2025-04-05
- 2.0.10 — 2025-03-31
- 2.0.9 — 2025-03-27
- 2.0.8 — 2025-03-26
- 2.0.7 — 2025-03-26
- 2.0.6 — 2025-03-25
- 2.0.5 — 2025-03-25
- 2.0.4 — 2025-03-25
- 2.0.3 — 2025-03-22
- 2.0.2 — 2025-03-22
- … 5 more at https://npm.io/package/base-log-factory/versions

## README

# base-log-factory

[![npm package](https://nodei.co/npm/base-log-factory.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/base-log-factory)

[![NPM version](https://img.shields.io/npm/v/base-log-factory.svg?style=flat)](https://npmjs.org/package/base-log-factory)
[![NPM Downloads](https://img.shields.io/npm/dm/base-log-factory.svg?style=flat)](https://npmjs.org/package/base-log-factory)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![TypeScript](https://img.shields.io/badge/lang-TypeScript-007ACC.svg)](https://www.typescriptlang.org/)

> 🚀 A flexible and simple JS logging library that allows logging or collecting logs in different environments by configuring various Appenders. Suitable for browser, NodeJS and other environments.

---

## 🌟 Core Features

- **Multi-level logging**  
  Supports `TRACE/DEBUG/INFO/WARN/ERROR/FATAL/OFF` with precise control over log granularity.

- **Flexible Appender Configuration**  
  Built-in `ConsoleAppender`, `FileAppender` (size-based rolling), `DateFileAppender` (date-based rolling), and custom Appender extensions.

- **Rich Formatting Options**  
  Provides `BasicLayout` and `PatternLayout` (similar to Log4j) with customizable placeholders.

- **Context Management**  
  Supports Mapped Diagnostic Context (MDC) for attaching request IDs, user information, etc.

---

## 📅 Documentation

For detailed usage instructions and API references, please visit the official documentation:

👉 [View Full Documentation](https://fengxinming.github.io/base-log-factory/)

---

## 🚀 Quick Start

### 1. Installation
```bash
npm install base-log-factory
```

### 2. Basic Usage
```typescript
// factory.ts
import { LogFactory, ConsoleAppender } from 'base-log-factory';

export default new LogFactory({
  appenders: [new ConsoleAppender()]
});

// main.ts
import logFactory from './factory';

const logger = logFactory.getLogger('app');
logger.info('Server started successfully');
```

---

## 🛠 Core Concepts

### 1. Log Levels (with color coding)
| Level   | Value | Description               | Recommended Use Cases               |
|---------|-------|---------------------------|-------------------------------------|
| **TRACE** | 6    | Detailed tracking logs   | Debugging code flow                 |
| **DEBUG** | 5    | Debugging information    | Development-stage debugging         |
| **INFO** | 4     | Operational information   | Key business process milestones    |
| **WARN** | 3     | Non-critical issues       | Resource warnings (e.g., low memory)|
| **ERROR** | 2    | Error events              | Failed operations                  |
| **FATAL** | 1    | Critical system failures  | System crashes                     |
| OFF     | 0     | Disable all logging        | Disable logging                    |

### 2. Appender Comparison
| Type               | Features                          | Use Cases                  |
|--------------------|-----------------------------------|---------------------------|
| `ConsoleAppender`  | Realtime console output           | Development debugging     |
| `FileAppender`     | Size-based rolling (e.g., app.log.1)| Production logging        |
| `DateFileAppender` | Date-based rolling (e.g., app.2023-08-01.log)| Daily log archiving    |

---

## 📝 Contribution Guide

1. **Development Setup**  
   ```bash
   npm install
   ```

2. **Testing**  
   ```bash
   npm test # Run unit tests
   ```

3. **Before Submitting PRs**  
   - Ensure ESLint is configured (VSCode plugin recommended)
   - Add test cases for new features
   - Update documentation

---

## 📄 License

[MIT License](../../LICENSE)

---
_Source: https://npm.io/package/base-log-factory · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
