Skip to content

Repository files navigation

angular-simple-logger

Testsnpmnpm

A simple logger for AngularJS 1.x with configurable log levels and optional debug integration.

Why does this still exist?

Good question. AngularJS hit end-of-life in 2022 and yet this package still pulls ~7,000 downloads per week (365k+ per year). That's because the real world doesn't care about deprecation notices — enterprise apps built on AngularJS are still running in production, and they still need their dependencies maintained.

This library is a dependency of angular-google-maps and other AngularJS packages that are, for better or worse, still in active use. As long as people are downloading it, we'll keep the lights on: modern builds, working CI, and security patches.

What about Angular 2+?

No plans — and here's why it doesn't make sense:

This library exists because AngularJS 1.x had its own dependency injection system and module lifecycle. You couldn't just import a logger — you needed it wrapped as an AngularJS service/provider to play nice with $log, $provide.decorator, and the digest cycle. That's what nemLogging does.

Angular 2+ doesn't have this problem. Modern Angular uses standard ES modules and TypeScript imports. There's no special DI wrapper needed to use a logging library — you just import it directly. The entire reason this package exists is an AngularJS-specific constraint that no longer applies.

If you're on Angular 2+ (or any modern framework), use these instead:

  • debug-fabulous (GitHub) — lazy-eval wrapper around debug that won't eat your CPU when disabled. Drop-in replacement with zero framework coupling.
  • debug (GitHub) — the OG. Tiny, namespaced, colored output. Works everywhere.
// That's it. No module wrapper needed.importdebugfrom'debug-fabulous';constlog=debug('myApp:component');log('just works');

If you've migrated to modern Angular, you've already outgrown this package. Congratulations. 🎓

⚠️ Security: Switch to @brickhouse-tech/angular-lts

The original angular package (v1.8.3) is end-of-life and has 9 unpatched vulnerabilities (including high-severity ReDoS and XSS). Running npm audit will flag these with "No fix available."

@brickhouse-tech/angular-lts is a drop-in replacement with all 11 CVEs patched and a clean audit:

# Replace angular with the LTS fork
npm uninstall angular
npm install @brickhouse-tech/angular-lts

No code changes required — same API, same module name, zero audit warnings.

Installation

npm install angular-simple-logger

Light version (no debug dependency)

If you don't need the debug module integration:

import'angular-simple-logger/light';// orrequire('angular-simple-logger/light');

Usage

As a module dependency

importangularfrom'angular';import'angular-simple-logger';angular.module('myApp',['nemLogging']);

Basic logging

angular.module('myApp').controller('MyCtrl',['nemSimpleLogger',function(nemSimpleLogger){// Default level is 'error' — only error and log will outputnemSimpleLogger.error('This will show');nemSimpleLogger.debug('This will NOT show');// Enable all levelsnemSimpleLogger.currentLevel=nemSimpleLogger.LEVELS.debug;nemSimpleLogger.debug('Now this shows!');}]);

Log levels

Levels are ordered: debug (0) < info (1) < warn (2) < error (3) < log (4).

Setting currentLevel to a value means that level and all higher levels will output.

nemSimpleLogger.currentLevel=nemSimpleLogger.LEVELS.warn;// warn, error, and log will output. debug and info will not.

Disable all logging

nemSimpleLogger.doLog=false;

Spawn independent loggers

// From an existing logger objectconstchildLogger=nemSimpleLogger.spawn();childLogger.currentLevel=childLogger.LEVELS.debug;// independent level// With debug namespace (full version only)constdbgLogger=nemSimpleLogger.spawn('myApp:worker');dbgLogger.debug('colored debug output via visionmedia/debug');

Decorate $log

angular.module('myApp').config(function($provide,nemSimpleLoggerProvider){$provide.decorator(...nemSimpleLoggerProvider.decorator);});// Now $log has level filtering:angular.module('myApp').run(function($log){$log.debug('works with levels!');});

Enable debug namespaces

angular.module('myApp').config(function(nemDebugProvider){nemDebugProvider.debug.enable('myApp:*');});

API

nemSimpleLogger

Property/MethodDescription
debug(...)Log at debug level
info(...)Log at info level
warn(...)Log at warn level
error(...)Log at error level
log(...)Log at log level
currentLevelCurrent minimum log level (default: LEVELS.error)
doLogBoolean to enable/disable all logging (default: true)
LEVELSObject with level constants: { debug: 0, info: 1, warn: 2, error: 3, log: 4 }
spawn([logger|namespace])Create a child logger. Pass a string for debug namespace (full version).

nemDebug (full version only)

The debug module, available as both a service and provider.

Migrating from 0.1.x

  • Source converted from CoffeeScript to ES6
  • Build system changed from Gulp to Rollup
  • Now provides UMD + ESM bundles
  • debug upgraded to v4
  • Public API is unchanged

Sponsor

If you find this useful, consider sponsoring @nmccready.

License

MIT

About

Basic logger with level logging which can also be independent.

Resources

Stars

37 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages