#140 : Individual log files

This commit is contained in:
2024-09-21 15:39:50 +02:00
parent 90ac7728d9
commit 798bfac643
24 changed files with 136 additions and 135 deletions

View File

@ -4,7 +4,7 @@ import { Character } from '@prisma/client'
import CharacterRepository from '../../repositories/characterRepository'
import { ZCharacterCreate } from '../../utilities/zodTypes'
import prisma from '../../utilities/prisma'
import logger from '../../utilities/logger'
import { gameLogger } from '../../utilities/logger'
export default function (socket: TSocket, io: Server) {
socket.on('character:create', async (data: any) => {
@ -41,10 +41,10 @@ export default function (socket: TSocket, io: Server) {
socket.emit('character:create:success')
socket.emit('character:list', characters)
logger.info('character:create success')
gameLogger.info('character:create success')
} catch (error: any) {
console.log(error)
logger.error(`character:create error: ${error.message}`)
gameLogger.error(`character:create error: ${error.message}`)
return socket.emit('notification', { message: 'Could not create character. Please try again (later).' })
}
})

View File

@ -1,11 +1,9 @@
import { Server } from 'socket.io'
import { ExtendedCharacter, TSocket } from '../../../utilities/types'
import { TSocket } from '../../../utilities/types'
import { getArgs, isCommand } from '../../../utilities/chat'
import CharacterRepository from '../../../repositories/characterRepository'
import ZoneRepository from '../../../repositories/zoneRepository'
import CharacterManager from '../../../managers/characterManager'
import logger from '../../../utilities/logger'
import prisma from '../../../utilities/prisma'
import { gameMasterLogger } from '../../../utilities/logger'
type TypePayload = {
message: string
@ -76,11 +74,11 @@ export default class TeleportCommandEvent {
})
this.socket.emit('notification', { title: 'Server message', message: `You have been teleported to ${zone.name}` })
logger.info('teleport', `Character ${character.id} teleported to zone ${zone.id}`)
gameMasterLogger.info('teleport', `Character ${character.id} teleported to zone ${zone.id}`)
callback(true)
} catch (error: any) {
logger.error(`Error in teleport command: ${error.message}`)
gameMasterLogger.error(`Error in teleport command: ${error.message}`)
this.socket.emit('notification', { title: 'Server message', message: 'An error occurred while teleporting' })
}
}

View File

@ -3,8 +3,7 @@ import { TSocket } from '../../utilities/types'
import CharacterRepository from '../../repositories/characterRepository'
import ZoneRepository from '../../repositories/zoneRepository'
import { isCommand } from '../../utilities/chat'
import logger from '../../utilities/logger'
import CharacterManager from '../../managers/characterManager'
import { gameLogger } from '../../utilities/logger'
type TypePayload = {
message: string
@ -29,14 +28,14 @@ export default class ChatMessageEvent {
const character = await CharacterRepository.getByUserAndId(this.socket.user?.id as number, this.socket.characterId as number)
if (!character) {
logger.error('chat:send_message error', 'Character not found')
gameLogger.error('chat:send_message error', 'Character not found')
callback(false)
return
}
const zone = await ZoneRepository.getById(character.zoneId)
if (!zone) {
logger.error('chat:send_message error', 'Zone not found')
gameLogger.error('chat:send_message error', 'Zone not found')
callback(false)
return
}
@ -48,7 +47,7 @@ export default class ChatMessageEvent {
message: data.message
})
} catch (error: any) {
logger.error('chat:send_message error', error.message)
gameLogger.error('chat:send_message error', error.message)
callback(false)
}
}

View File

@ -5,9 +5,8 @@ import path from 'path'
import fs from 'fs/promises'
import prisma from '../../../../utilities/prisma'
import sharp from 'sharp'
import logger from '../../../../utilities/logger'
import CharacterManager from '../../../../managers/characterManager'
import characterRepository from '../../../../repositories/characterRepository'
import { gameMasterLogger } from '../../../../utilities/logger'
interface IObjectData {
[key: string]: Buffer
@ -58,14 +57,14 @@ export default class ObjectUploadEvent {
const finalFilePath = path.join(public_folder, filename)
await writeFile(finalFilePath, objectData)
logger.info('gm:object:upload', `Object ${key} uploaded with id ${uuid}`)
gameMasterLogger.info('gm:object:upload', `Object ${key} uploaded with id ${uuid}`)
})
await Promise.all(uploadPromises)
callback(true)
} catch (error: any) {
logger.error('gm:object:upload error', error.message)
gameMasterLogger.error('gm:object:upload error', error.message)
callback(false)
}
}

View File

@ -3,8 +3,8 @@ import { TSocket } from '../../../../utilities/types'
import fs from 'fs'
import path from 'path'
import prisma from '../../../../utilities/prisma'
import logger from '../../../../utilities/logger'
import CharacterManager from '../../../../managers/characterManager'
import { gameMasterLogger } from '../../../../utilities/logger'
type Payload = {
id: string
@ -34,10 +34,10 @@ export default class GMSpriteDeleteEvent {
await this.deleteSpriteFolder(data.id)
await this.deleteSpriteFromDatabase(data.id)
logger.info(`Sprite ${data.id} deleted.`)
gameMasterLogger.info(`Sprite ${data.id} deleted.`)
callback(true)
} catch (error: any) {
logger.error('gm:sprite:delete error', error.message)
gameMasterLogger.error('gm:sprite:delete error', error.message)
callback(false)
}
}

View File

@ -3,9 +3,8 @@ import fs from 'fs/promises'
import { Server } from 'socket.io'
import { TSocket } from '../../../../utilities/types'
import prisma from '../../../../utilities/prisma'
import logger from '../../../../utilities/logger'
import CharacterManager from '../../../../managers/characterManager'
import characterRepository from '../../../../repositories/characterRepository'
import { gameMasterLogger } from '../../../../utilities/logger'
type Payload = {
id: string
@ -34,14 +33,14 @@ export default class GMTileDeleteEvent {
}
try {
logger.info(`Deleting tile ${data.id}`)
gameMasterLogger.info(`Deleting tile ${data.id}`)
await this.deleteTileFromDatabase(data.id)
await this.deleteTileFile(data.id)
logger.info(`Tile ${data.id} deleted successfully.`)
gameMasterLogger.info(`Tile ${data.id} deleted successfully.`)
callback(true)
} catch (error: any) {
logger.error('gm:tile:delete error', error.message)
gameMasterLogger.error('gm:tile:delete error', error.message)
callback(false)
}
}
@ -62,7 +61,7 @@ export default class GMTileDeleteEvent {
if (error.code !== 'ENOENT') {
throw error
}
logger.warn(`File ${finalFilePath} does not exist.`)
gameMasterLogger.warn(`File ${finalFilePath} does not exist.`)
}
}
}

View File

@ -4,9 +4,8 @@ import { writeFile } from 'node:fs/promises'
import path from 'path'
import fs from 'fs/promises'
import prisma from '../../../../utilities/prisma'
import CharacterManager from '../../../../managers/characterManager'
import characterRepository from '../../../../repositories/characterRepository'
import logger from '../../../../utilities/logger'
import { gameMasterLogger } from '../../../../utilities/logger'
interface ITileData {
[key: string]: Buffer
@ -48,7 +47,7 @@ export default function (socket: TSocket, io: Server) {
callback(true)
} catch (error) {
console.error('Error uploading tile:', error)
gameMasterLogger.error('Error uploading tile:', error)
callback(false)
}
})

View File

@ -3,9 +3,8 @@ import { TSocket } from '../../../utilities/types'
import ZoneRepository from '../../../repositories/zoneRepository'
import { Zone } from '@prisma/client'
import prisma from '../../../utilities/prisma'
import CharacterManager from '../../../managers/characterManager'
import characterRepository from '../../../repositories/characterRepository'
import logger from '../../../utilities/logger'
import { gameMasterLogger } from '../../../utilities/logger'
type Payload = {
name: string
@ -24,11 +23,11 @@ export default function (socket: TSocket, io: Server) {
if (!character) return
if (character.role !== 'gm') {
logger.info(`User ${character.id} tried to create zone but is not a game master.`)
gameMasterLogger.info(`User ${character.id} tried to create zone but is not a game master.`)
return
}
logger.info(`User ${character.id} has created a new zone via zone editor.`)
gameMasterLogger.info(`User ${character.id} has created a new zone via zone editor.`)
let zoneList: Zone[] = []
try {

View File

@ -2,9 +2,8 @@ import { Server } from 'socket.io'
import { TSocket } from '../../../utilities/types'
import ZoneRepository from '../../../repositories/zoneRepository'
import prisma from '../../../utilities/prisma'
import CharacterManager from '../../../managers/characterManager'
import characterRepository from '../../../repositories/characterRepository'
import logger from '../../../utilities/logger'
import { gameMasterLogger } from '../../../utilities/logger'
type Payload = {
zoneId: number
@ -21,11 +20,11 @@ export default function (socket: TSocket, io: Server) {
if (!character) return
if (character.role !== 'gm') {
logger.info(`User ${character.id} tried to delete zone but is not a game master.`)
gameMasterLogger.info(`User ${character.id} tried to delete zone but is not a game master.`)
return
}
logger.info(`User ${character.id} has deleted a zone via zone editor.`)
gameMasterLogger.info(`User ${character.id} has deleted a zone via zone editor.`)
try {
const zone = await ZoneRepository.getById(data.zoneId)

View File

@ -2,9 +2,8 @@ import { Server } from 'socket.io'
import { TSocket } from '../../../utilities/types'
import { Zone } from '@prisma/client'
import ZoneRepository from '../../../repositories/zoneRepository'
import CharacterManager from '../../../managers/characterManager'
import characterRepository from '../../../repositories/characterRepository'
import logger from '../../../utilities/logger'
import { gameMasterLogger } from '../../../utilities/logger'
interface IPayload {}
@ -19,11 +18,11 @@ export default function (socket: TSocket, io: Server) {
if (!character) return
if (character.role !== 'gm') {
logger.info(`User ${character.id} tried to list zones but is not a game master.`)
gameMasterLogger.info(`User ${character.id} tried to list zones but is not a game master.`)
return
}
logger.info(`User ${character.id} has requested zone list via zone editor.`)
gameMasterLogger.info(`User ${character.id} has requested zone list via zone editor.`)
try {
const zones = await ZoneRepository.getAll()

View File

@ -1,10 +1,9 @@
import { Server } from 'socket.io'
import { TSocket } from '../../../utilities/types'
import ZoneRepository from '../../../repositories/zoneRepository'
import { Character, Zone } from '@prisma/client'
import CharacterManager from '../../../managers/characterManager'
import { Zone } from '@prisma/client'
import characterRepository from '../../../repositories/characterRepository'
import logger from '../../../utilities/logger'
import { gameMasterLogger } from '../../../utilities/logger'
interface IPayload {
zoneId: number
@ -21,14 +20,14 @@ export default function (socket: TSocket, io: Server) {
if (!character) return
if (character.role !== 'gm') {
logger.info(`User ${character!.id} tried to request zone but is not a game master.`)
gameMasterLogger.info(`User ${character!.id} tried to request zone but is not a game master.`)
return
}
logger.info(`User ${character.id} has requested zone via zone editor.`)
gameMasterLogger.info(`User ${character.id} has requested zone via zone editor.`)
if (!data.zoneId) {
logger.info(`User ${character.id} tried to request zone but did not provide a zone id.`)
gameMasterLogger.info(`User ${character.id} tried to request zone but did not provide a zone id.`)
return
}
@ -36,7 +35,7 @@ export default function (socket: TSocket, io: Server) {
const zone = await ZoneRepository.getById(data.zoneId)
if (!zone) {
logger.info(`User ${character.id} tried to request zone ${data.zoneId} but it does not exist.`)
gameMasterLogger.info(`User ${character.id} tried to request zone ${data.zoneId} but it does not exist.`)
return
}

View File

@ -1,12 +1,11 @@
import { Server } from 'socket.io'
import { TSocket } from '../../../utilities/types'
import ZoneRepository from '../../../repositories/zoneRepository'
import { Zone, ZoneEventTile, ZoneEventTileType, ZoneObject } from '@prisma/client'
import { Zone, ZoneEventTileType, ZoneObject } from '@prisma/client'
import prisma from '../../../utilities/prisma'
import zoneManager from '../../../managers/zoneManager'
import logger from '../../../utilities/logger'
import CharacterManager from '../../../managers/characterManager'
import characterRepository from '../../../repositories/characterRepository'
import { gameMasterLogger } from '../../../utilities/logger'
interface IPayload {
zoneId: number
@ -39,14 +38,14 @@ export default function (socket: TSocket, io: Server) {
if (!character) return
if (character.role !== 'gm') {
logger.info(`User ${character.id} tried to update zone but is not a game master.`)
gameMasterLogger.info(`User ${character.id} tried to update zone but is not a game master.`)
return
}
logger.info(`User ${character.id} has updated zone via zone editor.`)
gameMasterLogger.info(`User ${character.id} has updated zone via zone editor.`)
if (!data.zoneId) {
logger.info(`User ${character.id} tried to update zone but did not provide a zone id.`)
gameMasterLogger.info(`User ${character.id} tried to update zone but did not provide a zone id.`)
return
}
@ -54,7 +53,7 @@ export default function (socket: TSocket, io: Server) {
let zone = await ZoneRepository.getById(data.zoneId)
if (!zone) {
logger.info(`User ${character.id} tried to update zone ${data.zoneId} but it does not exist.`)
gameMasterLogger.info(`User ${character.id} tried to update zone ${data.zoneId} but it does not exist.`)
return
}
@ -108,7 +107,7 @@ export default function (socket: TSocket, io: Server) {
zone = await ZoneRepository.getById(data.zoneId)
if (!zone) {
logger.info(`User ${character.id} tried to update zone ${data.zoneId} but it does not exist.`)
gameMasterLogger.info(`User ${character.id} tried to update zone ${data.zoneId} but it does not exist.`)
return
}
@ -117,7 +116,7 @@ export default function (socket: TSocket, io: Server) {
zoneManager.unloadZone(data.zoneId)
await zoneManager.loadZone(zone)
} catch (error: any) {
logger.error(`Error updating zone: ${error.message}`)
gameMasterLogger.error(`Error updating zone: ${error.message}`)
}
})
}

View File

@ -1,10 +1,9 @@
import { Server } from 'socket.io'
import { ExtendedCharacter, TSocket } from '../../utilities/types'
import { TSocket } from '../../utilities/types'
import ZoneRepository from '../../repositories/zoneRepository'
import ZoneManager from '../../managers/zoneManager'
import { Character, Zone } from '@prisma/client'
import logger from '../../utilities/logger'
import CharacterManager from '../../managers/characterManager'
import { gameLogger } from '../../utilities/logger'
interface IPayload {
zoneId: number
@ -58,7 +57,7 @@ export default function (socket: TSocket, io: Server) {
// send over zone and characters to socket
callback({ zone, characters: CharacterManager.getCharactersInZone(zone) })
} catch (error: any) {
logger.error(`Error requesting zone: ${error.message}`)
gameLogger.error(`Error requesting zone: ${error.message}`)
socket.disconnect()
}
})

View File

@ -2,7 +2,7 @@ import { Server } from 'socket.io'
import { TSocket } from '../../utilities/types'
import ZoneRepository from '../../repositories/zoneRepository'
import CharacterManager from '../../managers/characterManager'
import logger from '../../utilities/logger'
import { gameLogger } from '../../utilities/logger'
export default class ZoneLeaveEvent {
constructor(
@ -18,19 +18,19 @@ export default class ZoneLeaveEvent {
try {
const character = CharacterManager.getCharacterFromSocket(this.socket);
if (!character) {
logger.error('zone:character:leave error', 'Character not found')
gameLogger.error('zone:character:leave error', 'Character not found')
return
}
if (!character.zoneId) {
logger.error('zone:character:leave error', 'Character not in a zone')
gameLogger.error('zone:character:leave error', 'Character not in a zone')
return
}
const zone = await ZoneRepository.getById(character.zoneId)
if (!zone) {
logger.error('zone:character:leave error', 'Zone not found')
gameLogger.error('zone:character:leave error', 'Zone not found')
return
}
@ -42,9 +42,9 @@ export default class ZoneLeaveEvent {
// remove character from zone manager
await CharacterManager.removeCharacter(character)
logger.info('zone:character:leave', `Character ${character.id} left zone ${zone.id}`)
gameLogger.info('zone:character:leave', `Character ${character.id} left zone ${zone.id}`)
} catch (error: any) {
logger.error('zone:character:leave error', error.message)
gameLogger.error('zone:character:leave error', error.message)
}
}
}

View File

@ -5,10 +5,8 @@ import { ZoneEventTileService } from '../../services/zoneEventTileService'
import prisma from '../../utilities/prisma'
import { ZoneEventTile, ZoneEventTileTeleport } from '@prisma/client'
import Rotation from '../../utilities/character/rotation'
import logger from '../../utilities/logger'
import CharacterManager from '../../managers/characterManager'
import zoneManager from '../../managers/zoneManager'
import ZoneManager from '../../managers/zoneManager'
import { gameLogger } from '../../utilities/logger'
export type ZoneEventTileWithTeleport = ZoneEventTile & {
teleport: ZoneEventTileTeleport
@ -35,12 +33,12 @@ export default class CharacterMove {
private async handleCharacterMove({ positionX, positionY }: { positionX: number; positionY: number }): Promise<void> {
let character = CharacterManager.getCharacterFromSocket(this.socket)
if (!character) {
logger.error('character:move error', 'Character not found')
gameLogger.error('character:move error', 'Character not found')
return
}
if (!character) {
logger.error('character:move error', 'character has not been initialized?')
gameLogger.error('character:move error', 'character has not been initialized?')
return
}
@ -127,7 +125,7 @@ export default class CharacterMove {
private async handleZoneEventTile(zoneEventTile: ZoneEventTileWithTeleport): Promise<void> {
const character = CharacterManager.getCharacterFromSocket(this.socket)
if (!character) {
logger.error('character:move error', 'Character not found')
gameLogger.error('character:move error', 'Character not found')
return
}