<commit_before>## TODO: 
- how to turn off debug logging in libraries by default?  Check bunyan, if not, then use the 'appName' to determine it...
- convert to isotime for timestamps when viewing logs.

## Synopsis

The best Node.JS Logging Library.  A concise, human, and fully-featured logging client with out-of-the-box cloud integration, by <NAME> & Robustly.io

## Description & Motivation

Rather than creating yet another logging tool that focuses on storing and structuring your log data, here's a logging
client that will do all of the above, plus afford you unique capabilities. 

### Unique Capabilities?

- Track and alert you when your application fails to meet an objective (Failed Goal Tracking)
- Create custom alerts triggered by incoming log data analysis  (via integration with Robust-Notifications)
- Real-Time centralized streaming logs viewable with your browser at robustly.io/logs/your-application-name (via integration with Robust-Logs)
- Provide "Event Aggregator" services
- Local log file rotation
- Cloud backups
- Log indexed, queryable events in addition to grepable string/binary streams.

## Code Example

var log = require('win-with-logs')({
  name: 'webservice',
  env: 'dev',
  app: 'test-app'
  enableTrackedEvents: true,  // default is true
  logFile: '{app}.log',
  recipients: [
   {
      name: 'Admin',
      email: '<EMAIL>',
      subscribeTo: 'EVENT_TYPE1, EVENT_TYPE2',
      criticalErrors: true  // default.
   }],
   robustKey: 'xxx'  // provide your robustKey for "Robust-*" integration
});

// LOGGING API:
<commit_msg>updates<commit_after>## TODO: 
- how to turn off debug logging in libraries by default?  Check bunyan, if not, then use the 'appName' to determine it...
- convert to isotime for timestamps when viewing logs.

## Synopsis

The best Node.JS Logging Library.  A concise, human, and fully-featured logging client with out-of-the-box cloud integration, by <NAME> & Robustly.io

## Description & Motivation

Rather than creating yet another logging tool that focuses on storing and structuring your log data, here's a logging
client that will do all of the above, plus afford you unique capabilities. 

### Unique Capabilities?

- Track and alert you when your application fails to meet an objective (Failed Goal Tracking)
- Create custom alerts triggered by incoming log data analysis  (via integration with Robust-Notifications)
- Real-Time centralized streaming logs viewable with your browser at robustly.io/logs/your-application-name (via integration with Robust-Logs)
- Provide "Event Aggregator" services
- Local log file rotation
- Cloud backups
- Log indexed, queryable events in addition to grepable string/binary streams.

## Code Example

var log = require('win-with-logs')({
  component: 'webservice',
  env: 'dev',
  app: 'test-app',
  logFilePath: '.',
  errorLogFilePath: '.',
  trackedEventLogFilePath: '.',
  recipients: [
   {
      name: 'Admin',
      email: '<EMAIL>',
      subscribeToTriggers: {
        events: [EVENT_TYPE1, EVENT_TYPE2'],
        levels: 'critical'  // default
      }
   }],
   robustKey: 'xxx',  // enables "Robustly.io" integration.
   cloudConfig: {
      enableTrackedEvents: true,    // tracked events are queryable events stored in the cloud,
      trackedEventSendInterval: 5,    // tracked events are sent to the cloud at this interval  (synchronizing event and streamed logs
      enableLogStreaming: true,     // enable logs to be stored on the cloud
      logSendInterval: 5,      // sends logs to the cloud every 5 seconds.
   }
});

// LOGGING API:

{'fraction_non_alphanumeric': 0.08935574229691877, 'fraction_numerical': 0.00196078431372549, 'mean_word_length': 3.674083769633508, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4273220', 'n_tokens_mistral': 1017, 'n_tokens_neox': 989, 'n_words': 419}