{"_id":"@ahacad/logger","_rev":"2-5cde9f7007e2ea922b7e0ce20cde2903","name":"@ahacad/logger","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@ahacad/logger","version":"0.1.0","keywords":["log","logger","logging","debug","trace","console"],"author":{"name":"ahacad"},"license":"MIT","_id":"@ahacad/logger@0.1.0","maintainers":[{"name":"ahacad","email":"ahacad@126.com"}],"homepage":"https://github.com/Ahacad/logger#readme","bugs":{"url":"https://github.com/Ahacad/logger/issues"},"dist":{"shasum":"c056749b71e59987ba90dfa215051fe5dedbffba","tarball":"https://registry.npmjs.org/@ahacad/logger/-/logger-0.1.0.tgz","fileCount":7,"integrity":"sha512-b8a/w19j9KMKViUC2cU/qZHg1xKJ1g26lxAQlEiGyiPUc3mHVSd3L2cTwpvTBh99yj83PwSY0MmtPP6bwfCuuQ==","signatures":[{"sig":"MEYCIQCb9z+PyYLNrOmLoD+bcTidCVPiHmvv5qlNnHLbH0sLUQIhAJ17tSg8sNeopL5xGrIuAxvWFkJ7mwiCU3SGKAWUtQBq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93177},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=14.16.0"},"exports":{".":{"import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"378d1e2bd75d9306eed2b7b4d607ccde783e813a","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","example:cjs":"node example.cjs","example:esm":"node example.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"ahacad","email":"ahacad@126.com"},"repository":{"url":"git+https://github.com/Ahacad/logger.git","type":"git"},"_npmVersion":"11.2.0","description":"A lightweight, colorful, and feature-rich JavaScript logger","directories":{},"sideEffects":false,"_nodeVersion":"23.9.0","dependencies":{"eslint-scope":"^7.2.2","eslint-visitor-keys":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^6.7.0","eslint":"^8.39.0","ts-jest":"^29.1.0","typescript":"^5.0.4","@types/jest":"^29.5.1","@types/node":"^18.16.0","@typescript-eslint/parser":"^5.59.1","@typescript-eslint/eslint-plugin":"^5.59.1"},"_npmOperationalInternal":{"tmp":"tmp/logger_0.1.0_1743541234721_0.6171919439647318","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ahacad/logger","publishConfig":{"access":"public"},"version":"0.1.1","description":"A lightweight, colorful, and feature-rich JavaScript logger","keywords":["log","logger","logging","debug","trace","console"],"homepage":"https://github.com/Ahacad/logger#readme","bugs":{"url":"https://github.com/Ahacad/logger/issues"},"repository":{"type":"git","url":"git+https://github.com/Ahacad/logger.git"},"license":"MIT","author":{"name":"ahacad"},"type":"module","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.js"}},"main":"./dist/index.cjs","types":"./dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format cjs,esm --watch","lint":"eslint src/**/*.ts","test":"jest","prepublishOnly":"npm run build","example:cjs":"node example.cjs","example:esm":"node example.mjs"},"dependencies":{"eslint-scope":"^7.2.2","eslint-visitor-keys":"^3.4.3"},"devDependencies":{"@types/jest":"^29.5.1","@types/node":"^18.16.0","@typescript-eslint/eslint-plugin":"^5.59.1","@typescript-eslint/parser":"^5.59.1","eslint":"^8.39.0","jest":"^29.5.0","ts-jest":"^29.1.0","tsup":"^6.7.0","typescript":"^5.0.4"},"engines":{"node":">=14.16.0"},"module":"./dist/index.js","sideEffects":false,"_id":"@ahacad/logger@0.1.1","gitHead":"23a1d03c95ad9fd66273a167124dde0c8b55c665","_nodeVersion":"23.9.0","_npmVersion":"11.2.0","dist":{"integrity":"sha512-a+RBjUdHOx0FNonkR3TP9twoB6ZtP/TQZMGSUhl1BBGJjULJ1jDt/U3G6zWyFbxJ91waWs6+ePW0rXlCv/4YiA==","shasum":"08e16c0a3028e2ca14435eedaa85aa62c78379bf","tarball":"https://registry.npmjs.org/@ahacad/logger/-/logger-0.1.1.tgz","fileCount":7,"unpackedSize":93226,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFheLRvzZy3x+qNiLcbwo5rY8Lz92XoPanS0vXdsmv7CAiARxvsbpQ68AGKB4hym0SzNkSLMSLyMZUSpYBjhg+PBcg=="}]},"_npmUser":{"name":"ahacad","email":"ahacad@126.com"},"directories":{},"maintainers":[{"name":"ahacad","email":"ahacad@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/logger_0.1.1_1743541477751_0.12626851672059725"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-01T21:00:34.587Z","modified":"2025-04-01T21:04:38.419Z","0.1.0":"2025-04-01T21:00:34.909Z","0.1.1":"2025-04-01T21:04:37.938Z"},"bugs":{"url":"https://github.com/Ahacad/logger/issues"},"author":{"name":"ahacad"},"license":"MIT","homepage":"https://github.com/Ahacad/logger#readme","keywords":["log","logger","logging","debug","trace","console"],"repository":{"type":"git","url":"git+https://github.com/Ahacad/logger.git"},"description":"A lightweight, colorful, and feature-rich JavaScript logger","maintainers":[{"name":"ahacad","email":"ahacad@126.com"}],"readme":"# Logger\n\n![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)\n\nA lightweight, colorful, and feature-rich JavaScript logger with a beautiful interface and powerful functionality.\n\n## Features\n\n- ✨ **Multiple Log Levels**: TRACE, DEBUG, INFO, WARN, ERROR, SILENT\n- 🎨 **Colored Output**: Enhanced color support for both browsers and terminals\n- 🔀 **Level Filtering**: Disable logs below a certain level\n- 📝 **Named Loggers**: Support for module-specific loggers\n- 💾 **Level Persistence**: Save settings between sessions\n- ⏲ **Timestamps**: Configurable timestamp output\n- 🔌 **Formatters**: Multiple output formats available\n- 🚀 **Lightweight & Fast**: Under 5KB minified and gzipped\n- 📱 **Universal Support**: First-class support for ESM and CommonJS\n- 💻 **TypeScript Ready**: Comprehensive TypeScript definitions\n\n## Installation\n\n```bash\nnpm install logger\n```\n\n## Quick Start\n\n### ESM (ECMAScript Modules)\n\n```javascript\n// Modern ES module import\nimport logger from 'logger';\n\n// Basic usage\nlogger.info('Application started');\nlogger.warn('Configuration missing, using defaults');\nlogger.error('Failed to connect to database', { host: 'localhost', port: 5432 });\n```\n\n### CommonJS\n\n```javascript\n// CommonJS require\nconst logger = require('logger');\n\n// Basic usage\nlogger.info('Application started');\nlogger.warn('Configuration missing, using defaults');\nlogger.error('Failed to connect to database', { host: 'localhost', port: 5432 });\n```\n\n### Named Loggers\n\n```javascript\n// Module specific logger\nconst apiLogger = logger.getLogger('api');\napiLogger.setLevel('debug');\napiLogger.debug('Request received', { method: 'GET', path: '/users' });\n\n// Customize output\nlogger\n  .setLevel('info')     // Only show info and above\n  .useColors(true)      // Enable colors\n  .useTimestamps(true)  // Show timestamps\n  .persist();           // Save settings to localStorage/cookies\n```\n\n## Log Levels\n\nThe following log levels are available, in order of verbosity:\n\n- `TRACE` (0): Most verbose, for detailed debugging\n- `DEBUG` (1): Debug information\n- `INFO` (2): General information\n- `WARN` (3): Warnings (default level)\n- `ERROR` (4): Errors\n- `SILENT` (5): No logging\n\n## Colored Output\n\nLogger supports colorized output across environments:\n\n| Level | Browser | Terminal | Description |\n|-------|---------|----------|-------------|\n| TRACE | Cyan | Cyan | Detailed tracing information |\n| DEBUG | Green | Green | Debug-level messages |\n| INFO | Blue | Bright Blue | Informational messages |\n| WARN | Orange | Yellow | Warning messages |\n| ERROR | Red | Bright Red | Error messages |\n\nColors are automatically enabled based on environment detection and can be toggled with:\n\n```javascript\n// Enable colors\nlogger.useColors(true);\n\n// Disable colors\nlogger.useColors(false);\n```\n\n## API Reference\n\n### Logger Methods\n\n- `logger.trace(...args)`: Log at TRACE level\n- `logger.debug(...args)`: Log at DEBUG level\n- `logger.info(...args)`: Log at INFO level\n- `logger.warn(...args)`: Log at WARN level\n- `logger.error(...args)`: Log at ERROR level\n- `logger.log(...args)`: Alias for debug\n\n### Configuration\n\n- `logger.setLevel(level, persist?)`: Set the current log level\n- `logger.getLevel()`: Get the current log level as enum\n- `logger.getLevelName()`: Get the current log level name\n- `logger.setDefaultLevel(level)`: Set the default log level\n- `logger.resetLevel()`: Reset to the default log level\n- `logger.enableAll(persist?)`: Enable all logging (TRACE)\n- `logger.disableAll(persist?)`: Disable all logging (SILENT)\n- `logger.useColors(enable)`: Enable or disable colors\n- `logger.useTimestamps(enable)`: Enable or disable timestamps\n- `logger.persist(storage?)`: Enable log level persistence\n\n### Named Loggers\n\n- `logger.getLogger(name)`: Get a named logger\n- `logger.getLoggers()`: Get all named loggers\n\n### Formatters\n\n- `logger.setFormatter(formatter)`: Set custom formatter\n- `logger.getFormatter()`: Get current formatter\n\n## Custom Formatters\n\nThe library includes several built-in formatters:\n\n- `DefaultFormatter`: Includes timestamps, log level, and logger name\n- `MinimalFormatter`: Simple prefix with just the logger name\n- `JsonFormatter`: Structured JSON output\n\nExample:\n\n```javascript\n// ESM\nimport logger, { JsonFormatter } from 'logger';\n\n// CommonJS\nconst { default: logger, JsonFormatter } = require('logger');\n\n// Create a JSON formatter\nconst jsonFormatter = new JsonFormatter();\n\n// Use it with the logger\nlogger.setFormatter(jsonFormatter);\n\n// Or with a named logger\nconst apiLogger = logger.getLogger('api');\napiLogger.setFormatter(jsonFormatter);\n```\n\nYou can create your own formatter by implementing the `LogFormatter` interface.\n\n## Module Compatibility\n\nThis logger provides first-class support for both ESM and CommonJS module systems:\n\n### ESM (ECMAScript Modules)\n\n```javascript\n// Default import\nimport logger from 'logger';\n\n// Named imports\nimport logger, { LogLevel, JsonFormatter } from 'logger';\n```\n\n### CommonJS\n\n```javascript\n// Direct require (default export)\nconst logger = require('logger');\n\n// Destructured require\nconst { default: logger, JsonFormatter } = require('logger');\n```\n\n## Browser Usage\n\nLogger works great in browsers and includes automatic persistence using localStorage or cookies.\n\n```html\n<script type=\"module\">\n  import logger from 'logger';\n  logger.info('Logger loaded in browser');\n  \n  // Get a module-specific logger\n  const uiLogger = logger.getLogger('ui');\n  uiLogger.debug('UI component initialized');\n</script>\n```\n\n## Node.js Usage\n\nUse the logger in Node.js applications:\n\n```javascript\n// ESM\nimport logger from 'logger';\nlogger.info('Node.js application started');\n\n// CommonJS\nconst logger = require('logger');\nlogger.info('Node.js application started');\n\n// Named loggers work the same\nconst dbLogger = logger.getLogger('database');\ndbLogger.info('Connected to database');\n```\n\n## Examples\n\nCheck out the included examples:\n\n- `example.cjs` - CommonJS example\n- `example.mjs` - ES Modules example\n\nRun them with:\n\n```bash\n# Build the library first\nnpm run build\n\n# Run examples\nnpm run example:cjs\nnpm run example:esm\n```\n## License\n\nMIT\n","readmeFilename":"README.md"}