<html dir="LTR">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
    <title>UserName Property</title>
    <xml>
    </xml>
    <link rel="stylesheet" type="text/css" href="MSDN.css" />
  </head>
  <body id="bodyID" class="dtBODY">
    <div id="nsbanner">
      <div id="bannerrow1">
        <table class="bannerparthead" cellspacing="0">
          <tr id="hdr">
            <td class="runninghead">Apache log4net� SDK Documentation - Microsoft .NET Framework 4.0</td>
            <td class="product">
            </td>
          </tr>
        </table>
      </div>
      <div id="TitleRow">
        <h1 class="dtH1">LoggingEvent.UserName Property</h1>
      </div>
    </div>
    <div id="nstext">
      <p> Gets the name of the current user. </p>
      <div class="syntax">
        <span class="lang">[Visual�Basic]</span>
        <br />Public�ReadOnly�Property�UserName�As�<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">String</a></div>
      <div class="syntax">
        <span class="lang">[C#]</span>
        <br />public�<a href="ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfSystemStringClassTopic.htm">string</a>�UserName�{get;}</div>
      <p>
      </p>
      <h4 class="dtH4">Property Value</h4>
      <p> The name of the current user, or <code>NOT AVAILABLE</code> when the underlying runtime has no support for retrieving the name of the current user. </p>
      <h4 class="dtH4">Remarks</h4>
            <p> Calls <code>WindowsIdentity.GetCurrent().Name</code> to get the name of the current windows user. </p>
            <p> To improve performance, we could cache the string representation of the name, and reuse that as long as the identity stayed constant. Once the identity changed, we would need to re-assign and re-render the string. </p>
            <p> However, the <code>WindowsIdentity.GetCurrent()</code> call seems to return different objects every time, so the current implementation doesn't do this type of caching. </p>
            <p> Timing for these operations: </p>
            <div class="tablediv"><table class="dtTABLE" cellspacing="0"><tr valign="top">
                <th width="50%">Method</th>
                <th width="50%">Results</th>
              </tr><tr valign="top">
                <td><code>WindowsIdentity.GetCurrent()</code></td>
                <td>10000 loops, 00:00:00.2031250 seconds</td>
              </tr><tr valign="top">
                <td><code>WindowsIdentity.GetCurrent().Name</code></td>
                <td>10000 loops, 00:00:08.0468750 seconds</td>
              </tr></table></div>
            <p> This means we could speed things up almost 40 times by caching the value of the <code>WindowsIdentity.GetCurrent().Name</code> property, since this takes (8.04-0.20) = 7.84375 seconds. </p>
            <h4 class="dtH4">See Also</h4><p><a href="log4net.Core.LoggingEvent.html">LoggingEvent Class</a> | <a href="log4net.Core.html">log4net.Core Namespace</a></p><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e" viewastext="true" style="display: none;"><param name="Keyword" value="UserName property"></param><param name="Keyword" value="UserName property, LoggingEvent class"></param><param name="Keyword" value="LoggingEvent.UserName property"></param></object><hr /><div id="footer"><a href='http://logging.apache.org/log4net/'>Copyright 2004-2011 The Apache Software Foundation.</a><br></br>Apache log4net, Apache and log4net are trademarks of The Apache Software Foundation.</div></div>
  </body>
</html>
