
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
@mdaemon/logfile
Advanced tools
Not applicable to a browser context.
$ npm install @mdaemon/logfile --save
const LogFile = require("@mdaemon/logfile/dist/logfile.cjs");
import LogFile from "@mdaemon/logfile/dist/logfile.mjs";
/* default LogFileOptions
* logLevel: 0 (INFO)
* dir: "./logs"
* fileFormat: "log-%DATE%.log"
* logToConsole: false
* rollover: true
* useServerTime: true
* logStr: "%DATE% %TIME% | %LEVEL% | %MESSAGE%";
* startLog: "-----------------------------------------\n" +
* "------- Log Started: %DATETIME%\n" +
* "-----------------------------------------\n";
*
* endLog: "-----------------------------------------\n" +
* "------- Log Ended: %DATETIME%\n" +
* "-----------------------------------------\n";
*/
const { INFO, ERROR, WARN, CRITICAL, DEBUG } = LogFile;
const logFile = new LogFile({ logLevel: DEBUG });
logFile.start();
logFile.log("There was an error", 2);
logFile.stop();
/* file result
-----------------------------------------
------- Log Started: Fri, 08 Mar 2024 16:07:19 GMT
-----------------------------------------
2024-03-08 16:07:19 | ERROR | There was an error
-----------------------------------------
------- Log Ended: Fri, 08 Mar 2024 16:07:19 GMT
-----------------------------------------
*/
// set the log str
logFile.setLogStr("%DATE% %TIME% | %LEVEL% | %MESSAGE%");
// set the log dir
logFile.setLogDir("./logs");
// set the rollover boolean
logFile.setRollover(true);
// set the log level
logFile.setLogLevel(DEBUG);
// set the file name format
logFile.setFileFormat("log-%DATE%.log");
// set the log to console boolean
logFile.setLogToConsole(true);
// set the start log string
logFile.setStartLog("-----------------------------------------\n");
// set the end log string
logFile.setEndLog("-----------------------------------------\n");
// log help to the console
logFile.getHelp();
// log to info
logFile.info("This is an info log");
// log to warn
logFile.warn("This is a warn log");
// log to error
logFile.error("This is an error log");
// log to critical
logFile.critical("This is a critical log");
// log to debug
logFile.debug("This is a debug log");
// force synchronous flush to disk
logFile.flushSync();
setLogStr(format)
- Set the log entry format stringsetLogDir(path)
- Set the directory for log filessetRollover(boolean)
- Enable/disable daily log file rolloversetLogLevel(level)
- Set the minimum log levelsetFileFormat(format)
- Set the log filename formatsetLogToConsole(bool)
- Enable/disable console outputsetStartLog(string)
- Set the log file start stringsetEndLog(string)
- Set the log file end stringsetUseServerTime(bool)
- Enable/disable server timeinfo(message)
- Log an info messagewarn(message)
- Log a warning messageerror(message)
- Log an error messagecritical(message)
- Log a critical message (automatically flushes to disk)debug(message)
- Log a debug messagegetHelp()
- Display help informationflushSync()
- Force immediate synchronous write of buffered logs to diskstart()
- Initialize the logger and set up shutdown handlersstop()
- Stop the logger, flush remaining logs, and clean up resourcesThe logger automatically handles various termination scenarios to ensure logs are not lost:
The package includes a comprehensive testing setup that allows for testing the following formats:
# Test TypeScript source directly
npm run test:source
# Test CommonJS output
npm run test:cjs
# Run all tests (source, build CommonJS, then test each)
npm run test:all
The testing system uses a test helper that dynamically imports the appropriate module format based on environment variables, allowing the same test suite to verify all formats.
// Example of how to use the test helper in tests
import { getLogFile } from './test-helper';
// Wait for the LogFile class to be dynamically loaded
const LogFile = await getLogFile();
const logFile = new LogFile({ logLevel: LogFile.DEBUG });
Testing different module formats in Jest can be challenging. This project addresses these challenges by:
If you're extending the tests, be aware that different module formats may require special handling for imports, mocks, and configuration.
Published under the LGPL-2.1 license.
Published by
MDaemon Technologies, Ltd.
Simple Secure Email
https://www.mdaemon.com
FAQs
A node logging utility
We found that @mdaemon/logfile demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.