I’ve been learning SFCC recently, and found that I was missing a simple guide for server logging, so I decided to write one.
Basic Usage
First you need to get a reference to a Log object, and then you issue log statements that are the level you want (debug, info, warn, error, fatal):
var Logger = require('dw/system/Logger'); var log = Logger.getLogger('my_category'); log.warn('createRequest call took {0}ms, which is more than the threshold of {1}ms', 999, 500);
By passing just one argument to getLogger()
, you will be putting your log statements in the default location – more on that below.
Finding Log Entries
There are two ways to access logs, through Business Manager (BM), neither of which are immediately obvious:
- The log center
- The actual log files
The log center is accessed in Administration / Site Development / Development Setup, although it requires specific permissions:
The other way is to access the log files directly – also via BM – in Administration / Site Development / Development Setup, then click on Folder Browser, and navigate to the Logs directory:
Log Files
If you initialize the log object with one argument (e.g. getLogger('my_category')
), then you are specifying the category only, and the log entries will appear in a generic file. The file will be named something like customwarn-ecom-sandbox-SANDBOX-appserver-DATE.log where “warn” is the log level.
The category will appear in the log entry:
[2021-03-23 23:46:32.086 GMT] WARN PipelineCallServlet|212645572|SITE_NAME|CONTROLLER_NAME|PipelineCall|iEHTL3fGnn custom.my_category [] createRequest call took 999ms, which is more than the threshold of 500ms
You can add a second parameter when getting the log object, which will create a new log file. This may be useful if you are developing a cartridge and want all of that cartridge’s logging information stored in one place:
var log = Logger.getLogger('my_cartridge', 'my_category');
That will create a dedicated log file like so, in the same location as the other log files:
custom-my_cartridge-ecom-SANDBOX-ITENTIFIERS-DATE.log
Enabling Log Levels
The log level you want to use must be enabled in BM under Administration / Operations / Custom Log Settings, in the Custom Log Targets section:
If it’s not, then the log entries won’t appear.