示例#1
0
        private static AccessLogEntry ReadCombinedFormat(AccessLogEntry output, StringShuttle shuttle)
        {
            output.RemoteHostname = shuttle.ReadToNext(' ');
            shuttle.Read(1); // ' '

            output.RemoteLogname = shuttle.ReadToNext(' ');
            shuttle.Read(1); // ' '

            output.RemoteUser = shuttle.ReadToNext(' ');
            shuttle.Read(2); // ' ', '['

            output.Time = DateTimeOffset.ParseExact(shuttle.ReadToNext(']'), "dd/MMM/yyyy:HH:mm:ss zzz", CultureInfo.InvariantCulture);
            shuttle.Read(2); // ']', ' '

            output.Request = shuttle.ReadEscapedString();
            shuttle.Read(1); // ' '

            output.Status = int.Parse(shuttle.ReadToNext(' '));
            shuttle.Read(1); // ' '

            output.BytesSent = int.Parse(shuttle.ReadToNext(' '));
            shuttle.Read(1); // ' '

            output.Referer = shuttle.ReadEscapedString();
            shuttle.Read(1); // ' '

            output.UserAgent = shuttle.ReadEscapedString();

            return(output);
        }
示例#2
0
        public AccessLogEntry ParseCombinedFormat(string line)
        {
            var output  = new AccessLogEntry();
            var shuttle = new StringShuttle(line);

            return(ReadCombinedFormat(output, shuttle));
        }
示例#3
0
        public AccessLogEntry ParseVirtualHostCombinedFormat(string line)
        {
            var output  = new AccessLogEntry();
            var shuttle = new StringShuttle(line);

            output.ServerName = shuttle.ReadToNext(':');
            shuttle.Read(1); // ':'

            output.ServerPort = int.Parse(shuttle.ReadToNext(' '));
            shuttle.Read(1); // ' '

            return(ReadCombinedFormat(output, shuttle));
        }