![Create React App Officially Deprecated Amid React 19 Compatibility Issues](https://cdn.sanity.io/images/cgdhsj6q/production/04fa08cf844d798abc0e1a6391c129363cc7e2ab-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
winston-log2gelf
Advanced tools
Winston GELF transport to Graylog or Gelf server via TCP or HTTP (TLS and HTTPS ready)
A Graylog2 or GELF transport for Winston@3.x. Supports HTTP(S) & TCP/TCP over TLS protocols.
If you're looking for the 1.x version supporting Winston < 3.x, check winston-log2gelf@1.9.1.
I'm no longer using Graylog, so I currently lack the incentive to actively maintain this package. If you're interested in taking over or contributing, collaborators are more than welcome. Feel free to reach out!
$ npm install --save winston-log2gelf
const winston = require("winston");
const Log2gelf = require("winston-log2gelf");
const logger = winston.createLogger({
transports: [
new winston.transports.Console({
level: "info",
handleExceptions: true,
}),
new Log2gelf({
level: "error",
host: "192.168.0.15",
port: 12201,
protocol: "tls",
}),
],
});
Note that if you wish to handle Exceptions, as Winston automatically exits after an exception, you have to disable the exit behaviour to let Log2gelf
enough time to send the log across the network.
const logger = winston.createLogger({
exitOnError: false, // disable default winston exit
transports: [
new winston.transports.Console({
level: "info",
handleExceptions: true,
}),
new Log2gelf({
level: "error",
host: "192.168.0.15",
port: 12201,
protocol: "tls",
handleExceptions: true, // handle exception within Log2gelf
exitOnError: true, // exit after exception has been sent
exitDelay: 1000, // leave Log2gelf 1sec to send the message
}),
],
});
If used in a script where the process has to naturally exit after its execution, the connection has to be closed (as a db connection would have to) if TCP socket is used. It should be done like so:
const log2gelf = logger.transports.find(
(transport) => transport.name === "log2gelf"
);
logger.end = log2gelf.end;
name
: Transport namehostname
: The name of this host (default: os.hostname()
)host
: The GELF server address (default: 127.0.0.1
)port
: The GELF server port (default: 12201
)protocol
: Protocol used to send data (tcp
, tls
[TCP over TLS], http
or https
). (default: tcp
)protocolOptions
: See Overriding connection and request options.level
: Level of messages this transport should log. See winston levels (default: info
)silent
: Boolean flag indicating whether to suppress output. (default: false
)handleExceptions
: Boolean flag, whether to handle uncaught exceptions. (default: false
)exitOnError
: Will exit after x ms (2 sec by default) if Winston exitOnError
is set to false
if an exception is caughtexitDelay
: Specify the exit delay in ms for exitOnError
option. (default 2000
)service
: as facility is deprecated, service describes what kind of "service" this is (like MySQLd or Apache2). (default: nodejs
)environment
: the environment on which your service is running. (default: development
)release
: the version of your service (e.g. 1.0.0).disableMessageSanification
: disable use of JSON.stringify
over additional field to allow faster processing (default: false
)legacyFormat
: use the old full message encoding where the message object is passed through JSON.stringify
(default: false
)_foo
: any underscore-prefixed custom option will be passed as is to the server.tcp
and tls
reconnect
: Number of tcp reconnect attempts (default 0, 0 for none, -1 for infinite)wait
: Milliseconds to wait between reconnect attempts (default 1000)keepAlive
: Milliseconds after the last data packet received and the first keep alive probe (default 5000, 0 uses system default, less than 0 disable keep alive)timeout
: Milliseconds after wich the socket times out if there was no activity over ithttp
and https
keepAlive
: Milliseconds after the last data packet received and the first keep alive probe (default 5000, 0 uses system default, less than 0 disable HTTP keep alive)API change: prior to version 2.3.0
, the host
, port
and rejectUnauthorized
options were not overrideable by protocolOptions
. They were also previously not applied when using the http
or https
protocol!
TCP connection and HTTP request specific options can be passed via protocolOptions
.
These options override the default options (for example, host
and port
), and are passed to the function making the request:
Protocol | API |
---|---|
tcp | net.socket.connect() |
tls | tls.connect() |
http | http.request() |
https | https.request() |
This can be used to, for example with the http
and https
protocol, include custom headers or change the path if the GELF HTTP input is behind a reverse proxy:
new Log2gelf({
level: "error",
host: "192.168.0.15",
port: 12202,
protocol: "http",
protocolOptions: {
path: "/gelf-input/gelf",
headers: {
"X-API-Key": "secret-key",
},
},
});
Note: When using the http
or https
protocol, the Content-Length
header is overwritten by winston-log2gelf
to match the byte length of the message being sent and thus cannot be overridden with protocolOptions
.
The transport uses debug to print out some messages about it's internal functioning. To show them enable debug
namespace winston-log2gelf
.
There's sure room for improvement, so feel free to hack around and submit PRs! Please just follow the style of the existing code, which is Airbnb's style with minor modifications.
To maintain things clear and visual, please follow the git commit template.
FAQs
Winston GELF transport to Graylog or Gelf server via TCP or HTTP (TLS and HTTPS ready)
We found that winston-log2gelf demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.