@e2/core
    TypeScript icon, indicating that this package has built-in type declarations

    1.2.20 • Public • Published

    Enterprise Application Framework

    What is this?

    • Read configuration from conf/settings.yaml
    • Merge configuration from conf/${NODE_ENV}.yaml, conf/${NODE_ENV}.local.yaml and environment variables. (if have)
    • Merge configuration from data/settings.json (only when DATA_DIR was defined )
    • Print merged configuration on application start
    • Do not print sensitive configuration name with _URL, _KEY, _PASSWORD, _SECRET or _TOKEN postfix
    • Auto create missing dir if the configuration name ends with _DIR. (e.g. LOG_DIR folder)
    • Configuration with _DIR or _FILE will resolve to absolute path automatically
    • Provide a app.settings object for application to access the final configuration
    • Provide a app.logger object for application to use, available transporters: Console, File or Webhook
    • Provide nested error object Exception which will concat all the stacktrace for nested errors
    • When transporter itself got errors. It will automatically fallback to another available transporter
    • Trap linux signals SIGHUP, SIGINT, SIGQUIT, SIGTERM
    • Log nodejs process events uncaughtException
    • Provide universal application event beforeExit, exiting, exit
    • The original log called on failed transporter will logged using fallback logger

    Why doing this?

    • Because the things above is required for most enterprise applications. It should be shared across projects.
    • It's very important. But it's not as important as application logic. It can save your time to bootstrap a new project.
    • The same structure will make DevOps happy when doing deployment/monitoring on many projects. It should be standardized.
    • Together with Agent Framework; it can be automatically inject into other classes when required. It should be easy to use.

    Installation

    npm install @e2/core --save

    OR

    yarn add @e2/core

    Show me the code

    // TypeScript 2.2+
    import { Application } from '@e2/core';
     
    // enable config, logger support
    const app = new Application(); // default, same with `Application({ confDir: 'conf', root: process.cwd() })`
    // or
    const app = new Application({ confDir: 'settings' }); // if your configuration folder is not 'conf' 
    // or
    const app = new Application({ confDir: 'settings', root: '/usr/share/myapp' }); // if your root folder is not current working folder 
     
    console.log(app.settings);
    app.logger.info('Hi, I am agent stack'); // the log will be automatically save in `LOG_DIR` folder 
    // Node 6+
    var Application = require('@e2/core').Application;
     
    // enable config, logger support
    var app = new Application(); // default, same with `Application({ confDir: 'conf', root: process.cwd() })`
    // or
    var app = new Application({ confDir: 'settings' }); // if your configuration folder is not 'conf' 
    // or
    var app = new Application({ confDir: 'settings', root: '/usr/share/myapp' }); // if your root folder is not current working folder 
     
    console.log(app.settings);
    app.logger.info('Hi, I am agent stack'); // the log will be automatically save in `LOG_DIR` folder 
     

    Others

    How do I rotate log files?

    Consider we output our logs to /usr/share/myapp/logs/agent.log

    We would rotate our log files with logrotate, by adding the following to /etc/logrotate.d/myapp:

    /usr/share/myapp/logs/agent.log {
           su root
           daily
           rotate 7
           delaycompress
           compress
           notifempty
           missingok
           copytruncate
    }
    

    Keywords

    none

    Install

    npm i @e2/core

    DownloadsWeekly Downloads

    51

    Version

    1.2.20

    License

    none

    Unpacked Size

    62.4 kB

    Total Files

    8

    Last publish

    Collaborators

    • avatar
    • avatar