# hmjust-util

> Various utilities (log etc)

Latest version **1.0.4** (published 2026-07-20) · ISC license · 0 weekly downloads

## Install

```sh
npm install hmjust-util
pnpm add hmjust-util
yarn add hmjust-util
bun add hmjust-util
```

## Health

**Score 55/100 (C)** — status: active.

Positive: no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2026-07-20 |
| First published | 2020-05-24 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 10.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Henning Just |
| Maintainers | hmjust |

## Links

- npm: https://www.npmjs.com/package/hmjust-util
- npm.io page: https://npm.io/package/hmjust-util

## Recent versions

- 1.0.4 (latest) — 2026-07-20
- 1.0.3 — 2026-05-19
- 1.0.1 — 2020-09-28
- 1.0.0 — 2020-09-28
- 0.0.4 — 2020-08-28
- 0.0.3 — 2020-05-28
- 0.0.2 — 2020-05-25
- 0.0.1 — 2020-05-24

## README

# hmjust-util

A small set of utilities I use.

### Installing

npm install hmjust-util

## Initializing

```
const util = require('hmjust-util');
util.init();
```

### init

```
util.init();
util.init(settings);
```

*settings* is an optional object of those settings that you want to change.
Default settings are:

```
logFile:       "logger.log"     // name of log file for log() and warn()
errorFile:     "error.log"      // name of log file for warn()
tabularLogFile:"tabular.log"    // name of log file for tabular()
output:        CONSOLE | FILE   // output to console and log files
exception:     false            // if true, will throw an exception if the append to the log file fails
checkInterval: 5*60*1000        // check every 5 minutes
checkSize:     1024*1024        // 1 MB
verbose:       false            // verbose logging to console from this module
```

To only output log to logfiles (not console), initialize with

```
util.init({
	output: util.FILE,
});
```

Once *init()* has been called, every *checkInterval* milliseconds, the 
sizes of the log files will be checked. If a log file exceeds the *checkSize*,
the log file will be renamed. The renaming scheme is simply to add a dot
and an ascending number to the log filename, using the first available.
So if the log file is *logger.log* and there already exists a *logger.log.1*, 
the log file will be renamed *logger.log.2* and the next *log()* will create
a new *logger.log*. To disable this check, use a *checkInterval* less than
or equal to 0, or call *stopCheck()* after *init()*.

The main, error, and tabular log files are all checked. Writes that arrive
while a file is being rolled over are queued and written to the new file.

## Utilities

### log

*log(string)* outputs the string to the log file, each time
preceded by a datetime and the linenumber in the script.

```
util.log('This will be logged');
```

### warn

*warn(string)* outputs the string to the log file and the error log, each time
preceded by a datetime and the linenumber in the script.

```
util.warn('This will be logged, both in the ordinary log file and the error log');
```

### tabular

*tabular(string)* outputs the string to the log file, each time
preceded by a datetime and the linenumber in the script. The string is split
into a list of strings on tabs and newlines, and each substring is output
separately.

```
util.tabular('This will be logged\nand this will be on a separate line');
```

### stopCheck

Stops the scheduled checks for size of logfiles. The scheduled checks can
be restarted by calling *init()*.

### writer

*writer(logFileName, checkInterval, checkSize)* returns a logging function
that outputs like *log(string)* with a separate interval size check.

Using this any number of logging functions can be generated.

```
let logger = util.writer('myown.log', 300000, 1000000);
let otherLogger = util.writer('myother.log', 300000, 1000000);
logger('Write this to myown.log');
otherLogger('Write this to myother.log');
logger.close();
otherLogger.close();
```

Call the returned logger's *close()* method when it is no longer needed. This
stops its rollover check and closes its file stream.

### encodeURIComponentLatin1

A replacement for encodeURIComponent, that allows Latin1/ISO-8859-1 encodings 
to pass through. Useful in situations where one part of a client/server expects
Latin1 encoding.

### quotemeta

Quote string for regexp use, similar to Perl's [quotemeta](https://perldoc.perl.org/functions/quotemeta.html) / *\Q ... \E*.

## Constants

### NO

Will not log to console or logfile.

### CONSOLE

Will log to console.

### FILE

Will log to file.

## Author

* **Henning Just** - [blog](https://henningjust.wordpress.com/)

---
_Source: https://npm.io/package/hmjust-util · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
