WshLogger
The logger module for WSH (Windows Script Host) writes logging messages in a console or a file or Windows-Event-Viewer.
tuckn/WshModeJs basic applications structure
WshBasicApps
├─ WshCommander
├─ WshConfigStore (./dist/module.js)
├─ WshDotEnv (./dist/module.js)
├─ WshLogger - This repository (./dist/module.js)
└─ WshModeJs (./dist/bundle.js)
WshBasicApps contains all the above modules.
Operating environment
Works on JScript in Windows.
Installation
(1) Create a directory of your WSH project.
D:\> mkdir MyWshProject
D:\> cd MyWshProject
(2) Download this ZIP and unzip or Use the following git
command.
> git clone https://github.com/tuckn/WshLogger.git ./WshModules/WshLogger
or
> git submodule add https://github.com/tuckn/WshLogger.git ./WshModules/WshLogger
(3) Create your JScript (.js) file. For Example,
D:\MyWshProject\
├─ MyScript.js <- Your JScript code will be written in this.
└─ WshModules\
└─ WshLogger\
└─ dist\
└─ bundle.js
I recommend JScript (.js) file encoding to be UTF-8 [BOM, CRLF].
(4) Create your WSF packaging scripts file (.wsf).
D:\MyWshProject\
├─ Run.wsf <- WSH entry file
├─ MyScript.js
└─ WshModules\
└─ WshLogger\
└─ dist\
└─ bundle.js
And you should include .../dist/bundle.js into the WSF file.
For Example, The content of the above Run.wsf is
<package>
<job id = "run">
<script language="JScript" src="./WshModules/WshLogger/dist/bundle.js"></script>
<script language="JScript" src="./MyScript.js"></script>
</job>
</package>
I recommend this WSH file (.wsf) encoding to be UTF-8 [BOM, CRLF].
Awesome! This WSH configuration allows you to use the following functions in JScript (.\MyScript.js).
Usage
Now .\MyScript.js (JScript ) can use Wsh.Logger
.
For example.
var logger = Wsh.Logger; // Shorthand
var lggr = logger.create('warn/winEvent'); // Set warn level
lggr.error('1 Error message');
lggr.warn('2 Warning message');
lggr.success('3 Success message');
lggr.info('4 Info message');
lggr.debug('5 Debug message');
logger.transport();
// Creates the new error event into your Windows Event Viewer.
// [2020-07-19T13:11:09] error 1 Error message
// [2020-07-19T13:11:09] warn 2 Warning message
Logging Levels
As shown above, if you specify warn
level in the create
argument, the success
, info
, and debug
defined in the code are not recorded as logs.
The hierarchy of logging levels is as follows in Highest to Lowest order:
- off
- error
- warn
- success
- info
- debug
For example, if you specify off
, a log is not recorded.
Output Console
var logger = Wsh.Logger; // Shorthand
var lggr = logger.create('info/console');
// Specified `console`, it works like console.log.
lggr.error('1 Error message'); // console.error
lggr.warn('2 Warning message'); // console.log
lggr.success('3 Success message'); // console.log
lggr.info('4 Info message'); // console.log
lggr.debug('5 Debug message');
> cscript .\Run.wsf
[2020-07-19T13:11:09] error 1 Error message
[2020-07-19T13:11:09] warn 2 Warning message
[2020-07-19T13:11:09] success 3 Success message
[2020-07-19T13:11:09] info 4 Info message
Output Popup Window
var logger = Wsh.Logger; // Shorthand
var lggr = logger.create('error/popup');
lggr.error('1 Error message');
lggr.warn('2 Warning message');
lggr.success('3 Success message');
lggr.info('4 Info message');
lggr.debug('5 Debug message');
logger.transport();
Output File
var logger = Wsh.Logger; // Shorthand
var lggr = logger.create('success/D:\\logs\\foo_#{yyyy-MM-dd}.log');
lggr.error('1 Error message');
lggr.warn('2 Warning message');
lggr.success('3 Success message');
lggr.info('4 Info message');
lggr.debug('5 Debug message');
logger.transport();
Writes the logs into D:\logs\foo_2020-07-19.log.
[2020-07-19T13:11:09] error 1 Error message
[2020-07-19T13:11:09] warn 2 Warning message
[2020-07-19T13:11:09] success 3 Success message
If you omit the directory path, for example, 'warn/foo_#{yyyy-MM-dd}.log'
, the %CD%
(Current Working Directory) will be applied.
No Logging
var logger = Wsh.Logger; // Shorthand
var lggr = logger.create('off');
lggr.error('1 Error message');
lggr.warn('2 Warning message');
lggr.success('3 Success message');
lggr.info('4 Info message');
lggr.debug('5 Debug message');
logger.transport(); // Non logging
Together with another WshModeJs Apps
If you want to use it together with other WshModeJs Apps, install as following
> git clone https://github.com/tuckn/WshModeJs.git ./WshModules/WshModeJs
> git clone https://github.com/tuckn/WshCommander.git ./WshModules/WshCommander
> git clone https://github.com/tuckn/WshLogger.git ./WshModules/WshLogger
or
> git submodule add https://github.com/tuckn/WshModeJs.git ./WshModules/WshModeJs
> git submodule add https://github.com/tuckn/WshCommander.git ./WshModules/WshCommander
> git submodule add https://github.com/tuckn/WshLogger.git ./WshModules/WshLogger
The definition in the WSF packaging scripts file (.wsf) is as follows.
<package>
<job id = "run">
<script language="JScript" src="./WshModules/WshModeJs/dist/bundle.js"></script>
<script language="JScript" src="./WshModules/WshCommander/dist/module.js"></script>
<script language="JScript" src="./WshModules/WshLogger/dist/module.js"></script>
<script language="JScript" src="./MyScript.js"></script>
</job>
</package>
Please note the difference between .../dist/bundle.js
and .../dist/module.js
.
I recommend using WshBasicApps.
That includes all modules.
Dependency Modules
You can also use the following helper functions in your JScript (.\MyScript.js).
- tuckn/WshPolyfill
- tuckn/WshUtil
- tuckn/WshPath
- tuckn/WshOS
- tuckn/WshFileSystem
- tuckn/WshProcess
- tuckn/WshChildProcess
- tuckn/WshNet
- tuckn/WshModeJs
Documentation
See all specifications here and also below.
License
MIT
Copyright (c) 2020 Tuckn