//... public Log methods private static void Log(LogRecord loggingRecord) { try { lock (_staticSyncRoot) { if (LoggingEnabled) { if (IsAsynchroneous) { _loggingThread.AddWork(loggingRecord); } else { if (LogWriter != null) { LogWriter.Write(loggingRecord); LogWriter.Flush(); } } } } } catch (Exception ex) { FallbackLogging(loggingRecord, ex); } }
public static void Log(HttpContext context) { if (LoggingThread == null) { InitializeFile(context); } var sb = new StringBuilder(); var request = context.Request; var requestTimeUtc = ((DateTime)context.Items["_W3cLog_Rt"]); var requestTimeEndUtc = Current.DateTime.UtcNow; var timeTaken = (int)((requestTimeEndUtc - requestTimeUtc).TotalMilliseconds); var servervars = request.ServerVariables; var reqheaders = request.Headers; var response = context.Response; // Write log record, server data: sb.Append(requestTimeUtc.ToString("yyyy-MM-dd HH:mm:ss ")); // Date and Time (UTC) sb.Append(LogFormatted(servervars["LOCAL_ADDR"])); // Local IP address sb.Append(' '); sb.Append(LogFormatted(servervars["SERVER_PROTOCOL"])); // ex. HTTP/1.0 sb.Append(' '); sb.Append(LogFormatted(servervars["SERVER_PORT"])); // IP port on the server sb.Append(' '); sb.Append(LogFormatted(servervars["HTTPS"])); // 'on' or 'off' (HTTPS or HTTP) sb.Append(' '); sb.Append(LogFormatted(servervars["HTTP_HOST"])); // Hostname of this site sb.Append(' '); // Write log record, request data: sb.Append(LogFormatted(servervars["REQUEST_METHOD"])); // Request method: GET, POST, HEAD,... sb.Append(' '); sb.Append(LogFormatted(servervars["SCRIPT_NAME"])); // Name and path of the script/document sb.Append(' '); sb.Append(LogFormatted(servervars["QUERY_STRING"])); // Query parameters sb.Append(' '); sb.Append(LogFormatted(servervars["HTTP_USER_AGENT"])); // User-agent (brower) signature sb.Append(' '); sb.Append(LogFormatted(servervars["HTTP_ACCEPT_LANGUAGE"])); // User-agent (browser) languages sb.Append(' '); sb.Append(LogFormatted(servervars["HTTP_REFERER"])); // Referer URL sb.Append(' '); // Write log record, user data: sb.Append(LogFormatted(servervars["REMOTE_ADDR"])); // IP address of the client sb.Append(' '); sb.Append(LogFormatted(servervars["REMOTE_USER"])); // 'Username' of a logged-in user sb.Append(' '); //sb.Append(LogFormatted(request.Cookies.Get("ASP.NET_SessionId"))); sb.Append(LogFormatted((context.Session != null) ? context.Session.SessionID : null)); // ASP.NET Session ID sb.Append(' '); // Write log record, status and metrics data: sb.Append(response.StatusCode); // HTTP status code sb.Append(' '); sb.Append(response.SubStatusCode); // HTTP sub status code sb.Append(' '); sb.Append(timeTaken); // Call duration in milliseconds sb.Append(' '); sb.Append(request.TotalBytes + servervars["ALL_RAW"].Length); // Bytes sent to server (client-to-server); headers and request content sb.Append(' '); sb.Append(((MeteringStream)context.Items["_W3cLog_Os"]).BytesWritten); // Bytes sent to client (server-to-client); only resopnse content LoggingThread.AddWork(sb.ToString()); }