Skip to content

Commit ab2a44a

Browse files
authored
add option to set/unset user-agent header (#96)
* add option to set/unset user-agent header * add unit test and fix indentation * update test for user-agent * update indentation * update description of the field * fix typo * refactor assign headers * update version add github action npm-publish * update version in package-lock.json * upgrade moment to 2.29.2
1 parent 2d6c1d0 commit ab2a44a

File tree

8 files changed

+85
-35
lines changed

8 files changed

+85
-35
lines changed

.github/workflows/npm-publish.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
on:
2+
release:
3+
types: [published]
4+
jobs:
5+
publish:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v1
9+
- uses: actions/setup-node@v1
10+
with:
11+
node-version: 17
12+
- run: npm install
13+
- run: npm test
14+
- uses: JS-DevTools/npm-publish@v1
15+
with:
16+
token: ${{ secrets.NPM_TOKEN }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
.idea
22
.history
3+
.prettierignore
34
node_modules

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ logger.log(obj);
4747
* **addTimestampWithNanoSecs** - Add a timestamp with nano seconds granularity. This is needed when many logs are sent in the same millisecond, so you can properly order the logs in kibana. The added timestamp field will be `@timestamp_nano` Default: `false`
4848
* **compress** - If true the the logs are compressed in gzip format. Default: `false`
4949
* **internalLogger** - set internal logger that supports the function log. Default: console.
50+
* **setUserAgent** - Set `false` to send logs without user-agent field in request header. Default:`true`.
5051
* **extraFields** - Adds your own custom fields to each log. Add in JSON Format, for example: `extraFields : { field_1: "val_1", field_2: "val_2" , ... }`.
5152

5253

@@ -59,6 +60,12 @@ A few notes are worth mentioning regarding the use of the UDP protocol:
5960

6061

6162
## Update log
63+
**2.0.4**
64+
- Add parameter to manage User-agent
65+
66+
**2.0.3**
67+
- Add verbose logging to use in Azure serverless function
68+
6269
**2.0.2**
6370
- Updated required fields for typescript
6471

lib/logzio-nodejs.d.ts

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
interface ILoggerOptions {
2-
token: string;
3-
host?: string;
4-
type?: string;
5-
sendIntervalMs?: number;
6-
bufferSize?: number;
7-
debug?: boolean;
8-
numberOfRetries?: number;
9-
supressErrors?: boolean;
10-
addTimestampWithNanoSecs?: boolean;
11-
compress?: boolean;
12-
internalLogger?: { log(message: string, ...args: any[]): any } & Record<string, any>;
13-
protocol?: string;
14-
port?: string;
15-
timeout?: number;
16-
sleepUntilNextRetry?: number;
17-
callback?: (err: Error, bulk: object) => void;
18-
extraFields?: {};
2+
token: string;
3+
host?: string;
4+
type?: string;
5+
sendIntervalMs?: number;
6+
bufferSize?: number;
7+
debug?: boolean;
8+
numberOfRetries?: number;
9+
supressErrors?: boolean;
10+
addTimestampWithNanoSecs?: boolean;
11+
compress?: boolean;
12+
internalLogger?: { log(message: string, ...args: any[]): any } & Record<string, any>;
13+
protocol?: string;
14+
setUserAgent?: boolean;
15+
port?: string;
16+
timeout?: number;
17+
sleepUntilNextRetry?: number;
18+
callback?: (err: Error, bulk: object) => void;
19+
extraFields?: {};
1920
}
2021

2122
interface ILogzioLogger extends ILoggerOptions {
22-
jsonToString(json: string): string;
23-
log(msg: any, obj?: object): void;
24-
close(): void;
25-
sendAndClose(callback?: (error: Error, bulk: object) => void): void;
23+
jsonToString(json: string): string;
24+
log(msg: any, obj?: object): void;
25+
close(): void;
26+
sendAndClose(callback?: (error: Error, bulk: object) => void): void;
2627
}
2728

2829
export function createLogger(options: ILoggerOptions): ILogzioLogger;

lib/logzio-nodejs.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class LogzioLogger {
5353
timeout,
5454
sleepUntilNextRetry = 2 * 1000,
5555
callback = this._defaultCallback,
56+
setUserAgent = true,
5657
extraFields = {},
5758
}) {
5859
if (!token) {
@@ -71,7 +72,7 @@ class LogzioLogger {
7172
this.compress = compress;
7273
this.internalLogger = internalLogger;
7374
this.sleepUntilNextRetry = sleepUntilNextRetry;
74-
75+
this.setUserAgent = setUserAgent;
7576
this.timer = null;
7677
this.closed = false;
7778

@@ -258,8 +259,8 @@ class LogzioLogger {
258259
headers: {
259260
host: this.host,
260261
accept: '*/*',
261-
'user-agent': USER_AGENT,
262262
'content-type': 'text/plain',
263+
...(this.setUserAgent ? { 'user-agent': USER_AGENT } : {}),
263264
},
264265
};
265266

package-lock.json

Lines changed: 10 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "logzio-nodejs",
33
"description": "A nodejs implementation for sending logs to Logz.IO cloud service Copy of logzio-nodejs",
4-
"version": "2.0.3",
4+
"version": "2.0.4",
55
"author": "Gilly Barr <gilly@logz.io>",
66
"contributors": [
77
{
@@ -23,7 +23,11 @@
2323
{
2424
"name": "Roni Shaham",
2525
"email": "ronish31@gmail.com"
26-
}
26+
},
27+
{
28+
"name": "Anton Kolomiiets",
29+
"email": "resdenia@gmail.com"
30+
}
2731
],
2832
"repository": {
2933
"type": "git",
@@ -39,7 +43,7 @@
3943
"dependencies": {
4044
"json-stringify-safe": "5.0.1",
4145
"lodash.assign": "4.2.0",
42-
"moment": "^2.24.0",
46+
"moment": "2.29.2",
4347
"request": "^2.88.0",
4448
"request-promise": "^4.2.4"
4549
},

test/logger.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,25 @@ describe('logger', () => {
5959
logger.close();
6060
});
6161

62+
it('sends log without user-agent header', (done) => {
63+
const logger = createLogger({
64+
bufferSize: 1,
65+
callback: onDone,
66+
setUserAgent:false
67+
});
68+
sinon.spy(logger, '_tryToSend');
69+
70+
const logMsg = 'hello there from test';
71+
logger.log(logMsg);
72+
73+
function onDone() {
74+
assert.equal(logger._tryToSend.getCall(0).args[0].headers['user-agent'], undefined);
75+
logger._tryToSend.restore();
76+
logger.close();
77+
done();
78+
}
79+
});
80+
6281
it('should send a log with an object as additional param', (done) => {
6382
const logger = createLogger({
6483
bufferSize: 1,

0 commit comments

Comments
 (0)