npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

day-log-savings

v1.0.4

Published

Day Log Savings is a simple, zero dependencies, Node.js logger that lets you log things in organized, day rotating files.

Downloads

48

Readme

Day Log Savings

VersionDownloadsJavaScriptLicense

Table Of Contents

About

Day Log Savings is a simple, zero dependencies, Node.js logger that lets you log things in organized, day rotating files. The name is a play on words of daylight savings, which started when this module was first created.

Each day, a new log file is created, that file is then categorised into month and year folders.By default, query's are logged like so: [<time>] [<prefix>] <input> but you can customize this by using the functions options or changing the defaults. Those query's are then written into log files and saved at <project root>/logs/<year>/<month>/<day>.log. For example: /logs/2020/11/27.log.

Installation

npm install day-log-savings

Test

npm test

Write

Writes an input to the logs, customizable with options.

Usage

Function: <logger>.write(<input>, [options]); Returns: The string which was just logged.

Input {any}: The input which you want to be logged. Options {object}: {

  • Prefix {string}: The prefix which appears before the log input, case sensitive. In case of error, prefix is automatically changed to 'ERROR'. Defaults to 'LOG'.

  • Format {object}: { Change the format of the dates, timestamps and the log message itself. Use %<option> to define where within the string you want said option to appear.

    • Message {string}: The format in which your input appears in the logs. Options are '%time', '%date', '%prefix' and '%message'. Defaults to '[%time] [%prefix] %message'.
    • Time {string}: The format which the timestamps are displayed in. Options are '%hour', '%minute' and '%second'. Defaults to '%hour:%minute:%second'.
    • Date {string}: The format which the date are displayed in. Does not change the path to where logs are saved. Options are '%year', '%month' and '%day'. Defaults to '%year/%month/%day'.

      }

  • Length {number}: The maximum length the input can be before being put on a new line. Defaults to '100'.
  • Console {boolean}: Whether or not to log the query in the console along with the log file. Errors will always be logged. Defaults to 'false'.
  • Stringify {boolean}: If the input is an instance of 'Object', then JSON.stringify() it . Defaults to 'true'.
  • Stack {boolean}: If the input is an instance of 'Error', then use the stack property of it. Defaults to 'true'.

}

Examples

logger.write('Input using the default options.');
// [00:00:00] [LOG] Input using the default options.

logger.write('Has a custom prefix.', { prefix: 'cUsToM' });
// [00:00:00] [cUsToM] Has a custom prefix.

logger.write('Custom date, time and message format.', { format: { message: '[%date %time] [%prefix]: %message', date: '%day/%month/%year', time: '%hour.%minute.%second' } });
// [27/11/2020 00.00.00] [LOG]: Custom date, time and message format.

logger.write('Max first line input length reached.', { length: 1 });
// [00:00:00] [LOG]
// Max first line input length reached.

logger.write("This will be logged in the console and log file.", { console: true });
// Console & Log File:
// [00:00] [LOG] This will be logged in the console and log file.

logger.write(new Error('This error will not be stacked.'), { stack: false });
// [00:00:00] [ERROR] This error will not be stacked.

logger.write({ thisObjectWill: 'not be stringified' }, { stringify: false });
// [00:00:00] [LOG] [object Object]

Read

Reads and outputs the last x number lines from the bottom of a log file.

Usage

Function: <logger>.read([options]); Returns: The last x number of lines of a log file.

Options {object}: {

  • Path {string}: The path, formatted as 'year/month/day', to the log file which you want to read. Defaults to to todays date.
  • Lines {number}: The number of lines you want to read. Defaults to '15'.
  • Array {boolean}: Whether you want the output in an array (where one line equal one item) or not. Defaults to 'false'.
  • Blanks {boolean}: Whether or not to include blank lines in the output, both string and array. Defaults to 'true'.

}

Examples

logger.read();
// Returns a string containing the last 15 lines of todays log file.

logger.read({ path: '2020/11/27', lines: 5 });
// Returns a string containing the last 5 lines of the 27th of November 2020 log file.

logger.read({ array: true, blanks: false });
// Returns an array containing the last 15 lines of todays log file with all the blank lines removed.

Remove

Deletes a log file.

Usage

Function: <logger>.remove([path]); Returns: The path, formatted as 'year/month/day', to the file that was just deleted.

Path {string}: The path, formatted as 'year/month/day', to the log file which you want to delete. Defaults to to todays date.

logger.remove();
// Deletes todays log file.

logger.remove('2020/11/27');
// Deletes the 27th of November 2020 log file.

Defaults

Change the defaults for one of the functions that the module has.

Usage

Function: <logger>.defaults(<method>, [options]); Returns: The new defaults object of the chosen function.

Method {string}: The name of the function you want to change the defaults for. Example: 'write', 'read'. Options {object}: The new defaults which you want to set.

Examples

logger.defaults('write', { prefix: 'INFO', format: '%date %time %prefix: %message' });
// Changes the default prefix to 'INFO' and the format to '%date %time %prefix: %message'.

logger.defaults('read', { array: true, blanks: false });
// Ensures that the read function returns an array and removes all the blank lines.

logger.defaults('root', { path: `${process.cwd()}/achieve/logs` });
// Changes the default log root from '<project root>/logs' to '<project root>/achieve/logs'.