Mattias Lövström
Sep 3, 2010
  6677
(0 votes)

LinqToSqlLogger as promised

As I promise in my past blog post Troubleshooting database tool – SqlClientLogger that I should deliver a logger for LinqToSql also. This is done and it is also located in the support tools area on EPiServer world.

The changes to LinqToSqlLogger and SqlClientLogger are

1) The installation – it has to be configured as a Http installation Module

2) It requires .Net 3.5 – of cause

3) The log4net logger is named “LinqToSqlLogger”

Known issues

Transactions doesn’t work (yet), this means that saving operations break the logger.

LinqToSqlLogger

This tool logs every LinqToSql call to the database done by the
application layer with a stack trace and a time it took to execute
the query. The benefits of using this tool is that it prints out
a stack trace so it’s easy to locate what code that generates the
database call. The logs are written to log4net and should appear in
the sites log file.

Requirements

.Net 3.5
Log4Net

Installation

Drop the assemblies in the packages bin/ folder to your sites bin/ folder
Add a reference to the initialization module handler for LinqToSqlLogger in the sites

web.config file
Example:
<configuration>
  …
  <system.webServer>
    …
      <add name="LinqToSqlLoggerModule" type="LinqToSqlLogger.InitializeModule, LinqToSqlLogger" />

Usage

When the LinqToSqlLogger is installed on the site it is going to send
log4net messages using the logger “LinqToSqlLogger”.

Log4Net logger levels

DEBUG – prints out database command, stack trace and execution time
INFO – prints out database command and execution time.
WARN – prints out database command, stack trace and execution time the execution time is over 500 ms

Sample of how to configure it in the file EPiServerLog.config (or where your log4net configuration is)
<log4net>
  ...
  <logger name="LinqToSqlLogger">
    <level value="DEBUG" />
  </logger>

Duration threshold can be set in the appSettings in the web.config file for the keys
SqlClientLoggerDurationFilterMs – a threshold for all logged database calls
SqlClientLoggerDurationWarnFilterMs - a threshold for trigger a warning message, the default is set to 500 ms

Download

LinqToSqlLogger.zip

Sep 03, 2010

Comments

Mattias Lövström
Mattias Lövström Oct 8, 2010 08:41 AM

I have updated this blog with the contents of the readme file, so you don’t have to extract the zip file each time you need to see how it should be installed (probably bad names/configuration sense I never remember it myself).

Please login to comment.
Latest blogs
Optimizely Developers The Netherlands Meetup 2026

  I'm excited to not only co-host the upcoming  Optimizely Developers (The Netherlands) Meetup on my home turf at iO  in Den Bosch with Ehsan Ahzar...

WilliamP | Jun 5, 2026

Automatic assign of content reference properties on content creation

A long time ago I was tired of configuring setting properties on a settings page when deploying new functionality that needed global settings, so I...

Per Nergård (MVP) | Jun 5, 2026

Optimizely Opal vs AI-Assistant

This page compares strengths, use cases, flexibility, and pricing—highlighting Opal’s breadth vs Epicweb’s depth and how they can complement each...

Luc Gosso (MVP) | Jun 2, 2026 |

Optimizely PaaS CMS Administrator Certification (2025): What to Expect and How to Prepare

The Optimizely PaaS CMS Administrator certification is best understood as training for the operational side of Optimizely CMS. It focuses on how th...

Augusto Davalos | Jun 2, 2026

Creating Read-Only Calculated Fields in Optimizely Commerce 14

Introduction In many Optimizely Commerce projects, product information comes from external systems such as ERPs, PIMs, inventory management systems...

Ankit Agarwal | Jun 2, 2026

Pushing Content Between Optimizely DXP Environments

We've been working with a client who has been on Optimizely 11 for a long time - self-hosted, on their own server infrastructure, with a content...

Matt Pallatt | Jun 2, 2026