Understanding Sitecore logs – Part 1: xDB, Tracking, License, Path Analyzer and Memory Monitor

I want to start a series of blogs describing what each line in the Sitecore logs mean. I am basing my research on the log information extracted from Sitecore 9.1 Update-1 with the log priority level set to “INFO”.

Let’s start with the log file.

The log file is usually located in the configured data folder of your website (e.g. \App_Data\logs) and is created with the pattern log.yyyymmdd.hhmmss.txt (e.g. log.20190731.175131.txt).

xDB, Tracking, License logs

13448 16:39:23 INFO  **********************************************************************
13448 16:39:23 INFO  **********************************************************************
13448 16:39:23 INFO  
13448 16:39:23 INFO  xDB is enabled.
13448 16:39:23 INFO  
13448 16:39:23 INFO  Tracking is enabled.
13448 16:39:23 INFO  
13448 16:39:23 INFO  Valid xDB license is present.
13448 16:39:23 INFO  
13448 16:39:23 INFO  **********************************************************************
13448 16:39:23 INFO  **********************************************************************

This is the first block you are going to see and it’s logged by the class Sitecore.Xdb.Configuration.Pipelines.Initialize. ShowXdbInfo, Sitecore.Xdb.Configuration.

It shows:

  • xDB is enabled, based on the Xdb.Enabled setting located in the \App_Config\Sitecore\Marketing.xDB\Sitecore.Xdb.config file or by a configuration patch file .
  • Tracking is enabled, based on the Xdb.Tracking.Enabled setting located in the \App_Config\Sitecore\Marketing.xDB\Sitecore.Xdb.config file or by a configuration patch file.
  • xDB license is present. It checks the license by searching for any of the following keywords within your license file: “Sitecore.xDB.Base”, “Sitecore.xDB.Plus”, “Sitecore.xDB.Premium”, “Sitecore.xDB.Base.Cloud”, “Sitecore.xDB.Plus.Cloud”, “Sitecore.xDB.Premium.Cloud”, “Sitecore.xDB.Enterprise.Cloud”

Path Analyzer dependencies

The Path Analyzer is a component which analyzes visitor paths through a website and evaluates the analytics values associated with those visits. You can learn more at the Path Analyzer documentation.

27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.SequenceAnalyzer.Data.ITreeStorage
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Data.Storage.ITreeDefinitionStorage
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Contracts.ITreeDefinitionService
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Contracts.IMapItemRepository
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Contracts.IMapStatusService
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Contracts.IConfiguration
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.SequenceAnalyzer.Configuration.IPruningConfig
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Contracts.IContactReader
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Localization.IResourceManager
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Data.Caching.ICache
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Contracts.ITreeProvider
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Data.SitecoreData.IItemRepository
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Contracts.IMapItemDeploymentManager
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Data.Storage.ITreeStorageManager
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterType) Sitecore.PathAnalyzer.Rules.IRulesValidator

The block above is logged by the class Sitecore.PathAnalyzer.ApplicationContainer, Sitecore.PathAnalyzer. It basically registers the dependencies for Services, Repositories and others as configured in the files \App_Config\Sitecore\PathAnalyzer\Sitecore.PathAnalyzer.config and \App_Config\Sitecore\PathAnalyzer\Sitecore.PathAnalyzer.RemoteClient.config.

Inside the configuration files, you find in the comments what is the responsibility of each class.

Continuing with the Path Analyzer logs:

27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterModelsForSerialization) Setting serialization info
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterModelsForSerialization) Type 'Sitecore.PathAnalyzer.Data.Models.ExperienceNode, Sitecore.PathAnalyzer' was registered succesfully.
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterModelsForSerialization) Type 'Sitecore.PathAnalyzer.Data.Models.ExperienceTree, Sitecore.PathAnalyzer' was registered succesfully.
27936 17:51:34 INFO  [Path Analyzer](ApplicationContainer.RegisterModelsForSerialization) Type 'Sitecore.PathAnalyzer.Data.Models.PageNode, Sitecore.PathAnalyzer' was registered succesfully.

The block above is still logged by the class Sitecore.PathAnalyzer.ApplicationContainer, Sitecore.PathAnalyzer. It basically registers the dependencies for Models as configured in the files \App_Config\Sitecore\PathAnalyzer\Sitecore.PathAnalyzer.config:

  • Sitecore.PathAnalyzer.Data.Models.ExperienceNode, Sitecore.PathAnalyzer
  • Sitecore.PathAnalyzer.Data.Models.ExperienceTree, Sitecore.PathAnalyzer
  • Sitecore.PathAnalyzer.Data.Models.PageNode, Sitecore.PathAnalyzer

MemoryMonitor

27936 17:51:34 INFO  MemoryMonitor initialized. Threshold: 2 GB. Interval: 00:00:05

MemoryMonitor is a hook implemented by the class Sitecore.Diagnostics.MemoryMonitorHook, Sitecore.Diagnostics. Here’s some of its responsibilities:

  • adjusts the global cache load factor when the memory limit is exceeded
  • clear all caches when the memory limit is exceeded
  • garbage collect when the memory limit is exceeded

It is configured in the \App_Config\Sitecore.config file. The information you see in the log are set in this configuration file.

This same class is responsible for logging information such as:

Memory usage exceeded the MemoryMonitor threshold. All caches have been cleared.

Memory usage exceeded the MemoryMonitor threshold. Forced GC has been induced.

Memory usage: [number]

Memory used before/after GC: [number] / [number]

The cache load factor have been increased to   [number]. 

Number of suppressed logs due to the minimum time between log entries: [number].

That was it for this post.

Credits

Photo by Nathan Lemon on Unsplash

comments powered by Disqus