coreybutler / node-windows

Windows support for Node.JS scripts (daemons, eventlog, UAC, etc).
Other
2.81k stars 356 forks source link

Event Logging other than event id 1000 #352

Closed MarcRohrer closed 1 year ago

MarcRohrer commented 1 year ago

Hi,

I would like to write specific event ids to be able to easily identify the problem when something goes wrong. The standard id 1000 works flawlessly, but eg.

log.info('beginning of program, initializing...', 1001)

results in windows popping up a message that the program wants to change the system for a user defined event and no entry is written.

I am not sure, if I am doing something wrong... maybe?

Thanx!

Marc Rohrer

coreybutler commented 1 year ago

Truthfully, I'm not sure why this would be failing. The event logging code was written a very long time ago, and it worked with custom IDs... but I haven't tested it in a very long time.

The only thing I can think of is the encoding. The event ID may need to be a Uint32, which JS won't handle by default. That's just a guess though. Unfortunately, I do not have time to look into this, so I'll mark it as "help wanted".

miquelfire commented 1 year ago

Looking at how events are created in the code, I saw it used eventcreate. Looking at the docs, I noticed something that might be key: It seems the ID can only be between 1 and 1000.

From here

/id <eventID> Specifies the event ID for the event. A valid ID is any number from 1 to 1000.

MarcRohrer commented 1 year ago

Interesting, but very strange. In my event log, I see tons of event ids higher than 1000. Maybe a limitation of eventcreate. But for differentiaton purposes, the absolute value does not really matter, I guess, as the id is to be interpreted in relation to the event source, right? I checked with 700, which worked fine. You might consider adding to the documentation:

a) eventcreate is used under the hood b) this limits a custom event id to an unsigned int < 1000

Thank you very much for your input!

miquelfire commented 1 year ago

It would be int <= 1000

coreybutler commented 1 year ago

I just added notes about this to the README.

MarcRohrer commented 1 year ago

@miquelfire: so the id can be negative also? according to the first post by [coreybutler] the expected data type is Uint32. So this shouldn't really work. As the default is 1000, a custom value would be something other than 100, wouldn't it?

@coreybutler: future users will thank you for that :-)

miquelfire commented 1 year ago

The valid values are 1 to 1000. I assume if there was direct access to the event log API instead of using eventcreate, we could use higher values.