mirror of
https://github.com/Dahlgren/arma-server-web-admin.git
synced 2024-08-30 17:22:10 +00:00
Merge pull request #180 from Dahlgren/feature/logs-filter-order
Improved logs handling
This commit is contained in:
commit
ae1de87ed3
41
lib/logs.js
41
lib/logs.js
@ -12,6 +12,8 @@ var gamesLogFolder = {
|
||||
arma3_x64: 'Arma 3'
|
||||
}
|
||||
|
||||
var numberOfLogsToKeep = 20
|
||||
|
||||
var Logs = function (config) {
|
||||
this.config = config
|
||||
|
||||
@ -25,22 +27,20 @@ Logs.generateLogFileName = function (suffix) {
|
||||
.replace(/:/g, '-') // Replace time dividers with dash
|
||||
.replace(/T/, '_') // Remove date and time divider
|
||||
.replace(/\..+/, '') // Remove milliseconds
|
||||
return 'arma3server_' + dateStr + '_' + suffix + '.log'
|
||||
return 'arma3server_' + dateStr + '_' + suffix + '.rpt'
|
||||
}
|
||||
|
||||
Logs.prototype.delete = function (filename, callback) {
|
||||
callback = callback || function () {}
|
||||
|
||||
this.getLogFile(filename, function (err, logFile) {
|
||||
if (err) {
|
||||
if (callback) {
|
||||
return callback(err)
|
||||
}
|
||||
return callback(err)
|
||||
} else {
|
||||
if (logFile && logFile.path) {
|
||||
fs.unlink(logFile.path, callback)
|
||||
} else {
|
||||
if (callback) {
|
||||
return callback(new Error('File not found'))
|
||||
}
|
||||
return callback(new Error('File not found'))
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -86,7 +86,9 @@ Logs.prototype.logFiles = function (callback) {
|
||||
return
|
||||
}
|
||||
|
||||
files = files.map(function (file) {
|
||||
files = files.filter(function (file) {
|
||||
return file.endsWith('.rpt')
|
||||
}).map(function (file) {
|
||||
return {
|
||||
name: file,
|
||||
path: path.join(directory, file)
|
||||
@ -95,13 +97,15 @@ Logs.prototype.logFiles = function (callback) {
|
||||
|
||||
async.filter(files, function (file, cb) {
|
||||
fs.stat(file.path, function (err, stat) {
|
||||
file.created = stat.birthtime.toISOString()
|
||||
file.modified = stat.mtime.toISOString()
|
||||
file.formattedSize = filesize(stat.size)
|
||||
file.size = stat.size
|
||||
cb(!err && stat.isFile())
|
||||
})
|
||||
}, function (files) {
|
||||
files.sort(function (a, b) {
|
||||
return a.name.toLowerCase().localeCompare(b.name.toLowerCase())
|
||||
return b.created.localeCompare(a.created) // Descending order
|
||||
})
|
||||
|
||||
callback(null, files)
|
||||
@ -137,6 +141,10 @@ Logs.prototype.logServerProcesses = function (serverProcess, headlessClientProce
|
||||
headlessClientProcesses.forEach(function (headlessClientProcess, idx) {
|
||||
self.logServerProcess(headlessClientProcess, 'hc_' + (idx + 1))
|
||||
})
|
||||
|
||||
if (this.config.type === 'linux') {
|
||||
this.cleanupOldLogFiles()
|
||||
}
|
||||
}
|
||||
|
||||
Logs.prototype.logServerProcess = function (serverProcess, suffix) {
|
||||
@ -174,4 +182,19 @@ Logs.prototype.logServerProcess = function (serverProcess, suffix) {
|
||||
})
|
||||
}
|
||||
|
||||
Logs.prototype.cleanupOldLogFiles = function () {
|
||||
var self = this
|
||||
|
||||
self.logFiles(function (err, files) {
|
||||
if (err) {
|
||||
return
|
||||
}
|
||||
|
||||
var oldLogFiles = files.slice(numberOfLogsToKeep)
|
||||
oldLogFiles.forEach(function (logFile) {
|
||||
self.delete(logFile.name)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = Logs
|
||||
|
@ -3,7 +3,9 @@ var Backbone = require('backbone')
|
||||
var Log = require('app/models/log')
|
||||
|
||||
module.exports = Backbone.Collection.extend({
|
||||
comparator: 'name',
|
||||
comparator: function (a, b) {
|
||||
return b.get('created').localeCompare(a.get('created')) // Descending order
|
||||
},
|
||||
model: Log,
|
||||
url: '/api/logs/'
|
||||
})
|
||||
|
@ -19,13 +19,13 @@ describe('Logs', function () {
|
||||
|
||||
describe('generateLogFileName()', function () {
|
||||
it('should generate valid file name', function () {
|
||||
Logs.generateLogFileName('test').should.eql('arma3server_2015-10-21_19-28-32_test.log')
|
||||
Logs.generateLogFileName('test').should.eql('arma3server_2015-10-21_19-28-32_test.rpt')
|
||||
})
|
||||
})
|
||||
|
||||
describe('generateLogFilePath()', function () {
|
||||
it('should generate valid file path', function () {
|
||||
logs.generateLogFilePath('test').should.eql(path.join('/tmp', 'logs', 'arma3server_2015-10-21_19-28-32_test.log'))
|
||||
logs.generateLogFilePath('test').should.eql(path.join('/tmp', 'logs', 'arma3server_2015-10-21_19-28-32_test.rpt'))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user