mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
user stats logging
This commit is contained in:
parent
6ce52d00d9
commit
558e985773
2 changed files with 63 additions and 8 deletions
|
@ -41,6 +41,8 @@ const logFile = '/nlogs/nlogs'
|
|||
const allLogFile = '/nlogs/log'
|
||||
const statFile = 'stats/stats'
|
||||
const vStatFile = 'stats/vstats'
|
||||
const uStatsFile = 'stats/ustats'
|
||||
const uvStatsFile = 'stats/uvstats'
|
||||
const nologFile = './nolog'
|
||||
|
||||
const colors = [
|
||||
|
@ -56,8 +58,10 @@ const writeInterval = 10
|
|||
const debugLevel = parseInt(process.env.NS_LOGLEVEL) || 0
|
||||
Log('Loglevel is: ' + debugLevel)
|
||||
|
||||
let data = {}
|
||||
let vData = {}
|
||||
let data = {} // visit data
|
||||
let vData = {} // visit data, but daily
|
||||
let uData = {} // visit data, but per user
|
||||
let uvData = {} // visit data, but per user and daily
|
||||
let writes = 0
|
||||
|
||||
let noLogips = []
|
||||
|
@ -173,6 +177,20 @@ function setNoLogReadInterval () {
|
|||
|
||||
function Load () {
|
||||
Log('Loading logger...')
|
||||
try {
|
||||
uData = JSON.parse(utils.ReadFile(uStatsFile))
|
||||
} catch (e) {
|
||||
Log('Error at loading logs! (@ first run its normal)', GetColor('redbg'))
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
try {
|
||||
uvData = JSON.parse(utils.ReadFile(uvStatsFile))
|
||||
} catch (e) {
|
||||
Log('Error at loading logs! (@ first run its normal)', GetColor('redbg'))
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
try {
|
||||
var prevData = utils.ReadFile(statFile)
|
||||
data = JSON.parse(prevData)
|
||||
|
@ -191,7 +209,7 @@ function Load () {
|
|||
setNoLogReadInterval()
|
||||
}
|
||||
|
||||
function LogStat (url, ip, hostname) {
|
||||
function LogStat (url, ip, hostname, userId) {
|
||||
let nolog = noLogips.some((x) => {
|
||||
return x.includes(ip)
|
||||
})
|
||||
|
@ -201,10 +219,35 @@ function LogStat (url, ip, hostname) {
|
|||
|
||||
url = hostname + url.split('?')[0]
|
||||
Inc(url)
|
||||
AddUserIdStat(userId)
|
||||
IncUserStat(userId)
|
||||
AddVisitStat(url)
|
||||
Save()
|
||||
}
|
||||
|
||||
function IncUserStat (userId) {
|
||||
try {
|
||||
if (uData[userId] === undefined) { uData[userId] = 0 }
|
||||
uData[userId]++
|
||||
} catch (e) {
|
||||
Log('Error at making user ID stats!', GetColor('redbg'))
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
function AddUserIdStat (userId) {
|
||||
try {
|
||||
var m = new Date()
|
||||
const now = m.getFullYear() + '/' + ('0' + (m.getMonth() + 1)).slice(-2) + '/' + ('0' + m.getDate()).slice(-2)
|
||||
if (uvData[now] === undefined) { uvData[now] = {} }
|
||||
if (uvData[now][userId] === undefined) { uvData[now][userId] = 0 }
|
||||
uvData[now][userId]++
|
||||
} catch (e) {
|
||||
Log('Error at making user ID stats!', GetColor('redbg'))
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
function Inc (value) {
|
||||
if (value.startsWith('/?')) { value = '/' }
|
||||
if (data[value] === undefined) { data[value] = 0 }
|
||||
|
@ -222,19 +265,31 @@ function AddVisitStat (name) {
|
|||
function Save () {
|
||||
writes++
|
||||
if (writes === writeInterval) {
|
||||
try {
|
||||
utils.WriteFile(JSON.stringify(uData), uStatsFile)
|
||||
} catch (e) {
|
||||
Log('Error at writing logs! (more in stderr)', GetColor('redbg'))
|
||||
console.error(e)
|
||||
}
|
||||
try {
|
||||
utils.WriteFile(JSON.stringify(uvData), uvStatsFile)
|
||||
} catch (e) {
|
||||
Log('Error at writing logs! (more in stderr)', GetColor('redbg'))
|
||||
console.error(e)
|
||||
}
|
||||
try {
|
||||
utils.WriteFile(JSON.stringify(data), statFile)
|
||||
// Log("Stats wrote.");
|
||||
} catch (e) {
|
||||
Log('Error at writing logs!', GetColor('redbg'))
|
||||
console.log(e)
|
||||
Log('Error at writing logs! (more in stderr)', GetColor('redbg'))
|
||||
console.error(e)
|
||||
}
|
||||
try {
|
||||
utils.WriteFile(JSON.stringify(vData), vStatFile)
|
||||
// Log("Stats wrote.");
|
||||
} catch (e) {
|
||||
Log('Error at writing visit logs!', GetColor('redbg'))
|
||||
console.log(e)
|
||||
Log('Error at writing visit logs! (more in stderr)', GetColor('redbg'))
|
||||
console.error(e)
|
||||
}
|
||||
writes = 0
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue