예제 #1
0
        //... 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);
            }
        }
예제 #2
0
        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());
        }