update for jsr

This commit is contained in:
IanKulin
2025-09-25 21:06:40 +08:00
parent 9546dd3ab3
commit da69070b73
2 changed files with 45 additions and 26 deletions

View File

@@ -1,4 +1,4 @@
# logger [![NPM version](https://img.shields.io/npm/v/@iankulin/logger.svg?style=flat)](https://www.npmjs.com/package/@iankulin/logger) [![NPM total downloads](https://img.shields.io/npm/dt/@iankulin/logger.svg?style=flat)](https://npmjs.org/package/@iankulin/logger) # logger [![JSR](https://jsr.io/badges/@iankulin/logger)](https://jsr.io/@iankulin/logger) [![JSR Score](https://jsr.io/badges/@iankulin/logger/score)](https://jsr.io/@iankulin/logger/score)
> Flexible console logging utility with colors, and multiple output formats > Flexible console logging utility with colors, and multiple output formats
@@ -8,20 +8,23 @@
- **Flexible output formats**: JSON or simple text - **Flexible output formats**: JSON or simple text
- **Caller detection**: Automatically identifies source file and line number based on log level - **Caller detection**: Automatically identifies source file and line number based on log level
- **Color support**: Automatic TTY detection with colored output - **Color support**: Automatic TTY detection with colored output
- **ESM only**: Modern ES module support
## Install ## Install
Install with [npm](https://npmjs.org/package/@iankulin/logger): Install with [JSR](https://jsr.io/@iankulin/logger) for Deno:
```sh ```sh
$ npm install @iankulin/logger # Add to your deno.json
$ deno add @iankulin/logger
# Or import directly
$ deno run --allow-env --allow-sys your-script.js
``` ```
## Quick Start ## Quick Start
```js ```typescript
import Logger from '@iankulin/logger'; import Logger from "@iankulin/logger";
const logger = new Logger(); const logger = new Logger();
logger.info('Hello from logger'); logger.info('Hello from logger');
@@ -32,8 +35,8 @@ logger.error('Something went wrong');
### Basic Logging ### Basic Logging
```js ```typescript
import Logger from '@iankulin/logger'; import Logger from "@iankulin/logger";
const logger = new Logger({ level: 'info' }); const logger = new Logger({ level: 'info' });
logger.error('Critical error occurred'); logger.error('Critical error occurred');
@@ -52,7 +55,7 @@ The logger supports five log levels (from least to most verbose):
- `info` - Error, warning, and info messages (default) - `info` - Error, warning, and info messages (default)
- `debug` - All messages - `debug` - All messages
```js ```typescript
const logger = new Logger({ level: 'debug' }); const logger = new Logger({ level: 'debug' });
// All of these will be logged // All of these will be logged
@@ -73,7 +76,7 @@ console.log(logger.level()); // 'error'
#### JSON Format (Default) #### JSON Format (Default)
```js ```typescript
const logger = new Logger({ format: 'json' }); const logger = new Logger({ format: 'json' });
logger.info('Hello world'); logger.info('Hello world');
``` ```
@@ -93,7 +96,7 @@ logger.info('Hello world');
#### Simple Format #### Simple Format
```js ```typescript
const logger = new Logger({ format: 'simple' }); const logger = new Logger({ format: 'simple' });
logger.error('Something failed'); logger.error('Something failed');
``` ```
@@ -104,9 +107,9 @@ logger.error('Something failed');
### Message Formatting ### Message Formatting
The logger uses Node.js `util.format()` for message formatting with placeholders like `%s`, `%d`, `%j`. The logger supports `util.format()` style message formatting with placeholders like `%s`, `%d`, `%j`.
```js ```typescript
const logger = new Logger({ format: 'json' }); const logger = new Logger({ format: 'json' });
// String formatting // String formatting
@@ -125,7 +128,7 @@ simpleLogger.warn('Processing file %s (%d bytes)', 'data.txt', 1024);
### Custom Colors ### Custom Colors
```js ```typescript
const logger = new Logger({ const logger = new Logger({
colours: { colours: {
error: '\x1b[31m', // Red error: '\x1b[31m', // Red
@@ -140,7 +143,7 @@ const logger = new Logger({
Control when caller information (file and line number) is included in log messages. This is useful for performance optimization since caller detection can be expensive. Control when caller information (file and line number) is included in log messages. This is useful for performance optimization since caller detection can be expensive.
```js ```typescript
// Default: only include caller info for warnings and errors // Default: only include caller info for warnings and errors
const logger = new Logger({ callerLevel: 'warn' }); const logger = new Logger({ callerLevel: 'warn' });
@@ -186,12 +189,12 @@ logger.debug('Debug message'); // No caller info
## Common Usage Patterns ## Common Usage Patterns
```js ```typescript
import Logger from '@iankulin/logger'; import Logger from "@iankulin/logger";
// Production: JSON format with environment-based level // Production: JSON format with environment-based level
const prodLogger = new Logger({ const prodLogger = new Logger({
level: process.env.LOG_LEVEL || 'info', level: Deno.env.get('LOG_LEVEL') || 'info',
format: 'json', format: 'json',
callerLevel: 'error', // Performance optimization callerLevel: 'error', // Performance optimization
}); });
@@ -208,8 +211,7 @@ const testLogger = new Logger({ level: 'silent' });
## Requirements ## Requirements
- Node.js 18.0.0 or higher - Deno 1.37.0 or higher
- ES modules support
## License ## License
@@ -217,9 +219,11 @@ const testLogger = new Logger({ level: 'silent' });
## Versions ## Versions
- **0.1.5** - Initial release - **1.0.0** - JSR release with full Deno support
- **0.1.6** - Added tests, improved error handling, caller detection loop prevention, `silent` logging level - Migrated from [npm version](https://www.npmjs.com/package/@iankulin/logger) to JSR (JavaScript Registry)
- **1.0.0** - Production release - Full TypeScript support
- **1.0.2** - Added types for intellisense - Native Deno compatibility
- **1.1.0** - added { time: 'short' } option, refactor tests, added { callerLevel: 'warn' } option
- **1.1.2** - dependencies update following [chalk supply chain attack](https://www.bleepingcomputer.com/news/security/self-propagating-supply-chain-attack-hits-187-npm-packages/) although not affected. ## AI Disclosure
- AI Code tools were used in this project

15
jsr.json Normal file
View File

@@ -0,0 +1,15 @@
{
"name": "@iankulin/logger",
"version": "1.0.0",
"exports": {
".": "./lib/logger.ts"
},
"publish": {
"include": [
"lib/",
"README.md",
"LICENSE",
"jsr.json"
]
}
}