Return-Path: Delivered-To: apmail-logging-log4net-user-archive@www.apache.org Received: (qmail 31384 invoked from network); 26 Sep 2007 17:45:35 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Sep 2007 17:45:35 -0000 Received: (qmail 2721 invoked by uid 500); 26 Sep 2007 17:45:24 -0000 Delivered-To: apmail-logging-log4net-user-archive@logging.apache.org Received: (qmail 2691 invoked by uid 500); 26 Sep 2007 17:45:24 -0000 Mailing-List: contact log4net-user-help@logging.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Log4NET User" List-Id: Delivered-To: mailing list log4net-user@logging.apache.org Received: (qmail 2680 invoked by uid 99); 26 Sep 2007 17:45:24 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Sep 2007 10:45:24 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [193.41.201.242] (HELO dd1.diamonddogs.at) (193.41.201.242) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Sep 2007 17:47:37 +0000 Received: from [193.41.201.201] (helo=maildog.office.dd.loc) by dd1.diamonddogs.at with esmtp (Exim 4.67) (envelope-from ) id 1IaawU-00047G-Fg for log4net-user@logging.apache.org; Wed, 26 Sep 2007 19:44:58 +0200 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C80064.F4791E5F" Subject: RE: Can I use static logger and ThreadContext.Properties in asp.net project? Date: Wed, 26 Sep 2007 19:44:57 +0200 Message-ID: <5819CEE5BB511B4285A1F4BC147C53773E8139@maildog.office.dd.loc> In-Reply-To: <43A10173A6B4F54BACFACFB39EBD4755025036@ex2.techsoftwareinc.com> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: Can I use static logger and ThreadContext.Properties in asp.net project? Thread-Index: Acf7NAdRyXJ9fEEvTTWtW2BMGEXMdwEc3pMgAC69JgA= From: "Erich Eichinger" To: "Log4NET User" X-Virus-Checked: Checked by ClamAV on apache.org This is a multi-part message in MIME format. ------_=_NextPart_001_01C80064.F4791E5F Content-Type: multipart/alternative; boundary="----_=_NextPart_002_01C80064.F4791E5F" ------_=_NextPart_002_01C80064.F4791E5F Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, =20 as Walden states: most of the time it will work, but there's no = guarantee. =20 a few years ago (log4net 1.2.9) I wrote an extension "LogicalWebContext" = to workaround this missing feature. Instead of a threadstatic, it stores = properties into HttpContext.Items. The extension consists of a = HttpModule and a new Appender, "WebContextAwareForwardingAppender". =20 note, that this code has been written for net 1.1 and log4net 1.2.9. I = expect that there are some changes necessary to make it run with log4net = 1.2.10 and net 2.0 =20 hope this helps, Erich ________________________________ From: Walden H. Leverich [mailto:WaldenL@TechSoftInc.com]=20 Sent: Tuesday, September 25, 2007 9:13 PM To: Log4NET User Subject: RE: Can I use static logger and ThreadContext.Properties in = asp.net project? =09 =09 Xuguang, =20 Assuming you're not using async-pages, a single request will be = processed by a single thread, so you can set the properties at = request-start and read them later in the process w/out concern. However, = note I said "single-request." You cannot use the thread context like = session state, there is no guarantee that you'll end up on the same = thread next time you request a page from the server, and there's no = guarantee that a single thread won't handle multiple requests. In fact, = I can promise that a single thread will process multiple requests, = that's how you get performance.=20 =20 In short, set the properties at the start of the request (in = global.asax for example) and you're fine for that request, but not = across requests. =20 -Walden =20 --=20 Walden H Leverich III Tech Software (516) 627-3800 x3051 WaldenL@TechSoftInc.com http://www.TechSoftInc.com = =20 =09 Quiquid latine dictum sit altum viditur. (Whatever is said in Latin seems profound.)=20 =20 ------_=_NextPart_002_01C80064.F4791E5F Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Can I = use static logger and ThreadContext.Properties in asp.net = project?
Hi,
 
as Walden states: most of the time it will = work, but=20 there's no guarantee.
 
a few years ago (log4net 1.2.9) I wrote an = extension=20 "LogicalWebContext" to workaround this missing feature. Instead of a=20 threadstatic, it stores properties into HttpContext.Items. The extension = consists of a HttpModule and a new Appender,=20 "WebContextAwareForwardingAppender".
 
note, that this code has been written for net = 1.1 and=20 log4net 1.2.9. I expect that there are some changes necessary to make it = run=20 with log4net 1.2.10 and net 2.0
 
hope this helps,
Erich


From: Walden H. Leverich=20 [mailto:WaldenL@TechSoftInc.com]
Sent: Tuesday, September = 25, 2007=20 9:13 PM
To: Log4NET User
Subject: RE: Can I use = static=20 logger and ThreadContext.Properties in asp.net = project?

Xuguang,

 

Assuming=20 you=92re not using async-pages, a single request will be processed by = a single=20 thread, so you can set the properties at request-start and read them = later in=20 the process w/out concern. However, note I said =93single-request.=94 = You cannot=20 use the thread context like session state, there is no guarantee that = you=92ll=20 end up on the same thread next time you request a page from the = server, and=20 there=92s no guarantee that a single thread won=92t handle multiple = requests. In=20 fact, I can promise that a single thread will process multiple = requests,=20 that=92s how you get performance.

 

In=20 short, set the properties at the start of the request (in global.asax = for=20 example) and you=92re fine for that request, but not across=20 requests.

 

-Walden

 

--=20

Walden=20 H Leverich III
Tech Software
(516) 627-3800 x3051

WaldenL@TechSoftInc.com
http://www.TechSoftInc.com

Quiquid=20 latine dictum sit altum viditur.
(Whatever is said in Latin seems=20 profound.)

 

------_=_NextPart_002_01C80064.F4791E5F-- ------_=_NextPart_001_01C80064.F4791E5F Content-Type: application/x-zip-compressed; name="DD.SysLog.zip" Content-Transfer-Encoding: base64 Content-Description: DD.SysLog.zip Content-Disposition: attachment; filename="DD.SysLog.zip" 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 odIBX4RO6FuBZFYKtEbBzHBqdLei5KDpEx5cOodI2XE2kq46kixMw+hCpqF73pYea5Ou7nt4/YMk mT5qZYRV7x/xf8sctl/A9GQKiL68wuh6/NfSBxr6/QFQSwECFAAUAAIACABKrEQ22UM/mwwGAAAR EwAAHgAAAAAAAAABACAAAAAAAAAATG9naWNhbFdlYkNvbnRleHRQcm9wZXJ0aWVzLmNzUEsBAhQA FAACAAgA6Js6NwTgJm6sAgAALwcAAAoAAAAAAAAAAQAgAAAASAYAAHdlYi5jb25maWdQSwECFAAU AAIACAAamzo3PCxzFxsJAACRIAAAEwAAAAAAAAABACAAAAAcCQAAV2ViTG9nZ2luZ01vZHVsZS5j c1BLAQIUABQAAgAIADGbOjeZxGiQQQAAAEIAAAALAAAAAAAAAAEAIAAAAGgSAABjb21waWxlLmJh dFBLAQIUABQAAgAIAEqsRDYgb3qy0AMAAHcLAAAUAAAAAAAAAAEAIAAAANISAABMb2dpY2FsV2Vi Q29udGV4dC5jc1BLAQIUABQAAgAIAEqsRDb+i3TtLAIAAL0FAAArAAAAAAAAAAEAIAAAANQWAABM b2dpY2FsV2ViQ29udGV4dEF3YXJlRm9yd2FyZGluZ0FwcGVuZGVyLmNzUEsFBgAAAAAGAAYAmQEA AEkZAAAAAA== ------_=_NextPart_001_01C80064.F4791E5F--