Repository
Current version released
3 years ago
Versions
Analogger
This is a simple Deno library to consume access logs generated by nginx/apache and generate reports about visits, sessions, etc.
It’s divided in two scopes:
- Transformers: to parse, transform and enrich the data from log files.
- Reporters: to generate reports of this data.
Example
import {
read,
saveHTML,
saveJSON,
show,
transform,
} from "https://deno.land/x/analogger/mod.ts";
import { sessions } from "https://deno.land/x/analogger/reports.ts";
import {
filter,
filterByExtensions,
filterByTimerange,
isBot,
parser,
parseUserAgent,
sessionId,
} from "https://deno.land/x/analogger/transformers.ts";
// Step 1: Read, parse and transform the logs:
const result = await transform(
read("./access.log"), // Read the log file.
parse(), // Parse the data.
filterByExtensions([".html", ""]), // Filter by .html extensions or not extension at all.
filterByTimeRange( // Filter by time range (one year, from 2020 to 2021).
new Date(2020),
new Date(2021),
),
filter((log) => log.status === 200), // Get only requests generating a 200 status code response.
isBot(), // Add the `isBot` property indicating if the request is from a bot (ex: Google).
filter((log) => !log.isBot), // Discard request from bots
parseUserAgent(), // Parse the user-agent info
filter((log) => !!log.browserName), // Discard request with unknown browsers
sessionId(), // Add the `sessionId` property with an autogenerated session id
);
// Now, result is an array of logs with rich data (like date, browserName, path, referrer, etc)
// Step 2: Generate reports with this data.
// For example, the number of sessions by month:
const report = session(result, "monthly");
// Step 3:
// Save the result in an interactive html file that you can open in your browser
await saveHTML("sessions.html", report);
// Or save only the JSON data of this report
await saveJSON("sessions.json", report);
// Or create a local server to see in your browser
await show(report);