diff --git a/gaseous-server/Models/PlatformMapping.cs b/gaseous-server/Models/PlatformMapping.cs index 7a83a19..62afbf2 100644 --- a/gaseous-server/Models/PlatformMapping.cs +++ b/gaseous-server/Models/PlatformMapping.cs @@ -120,7 +120,9 @@ namespace gaseous_server.Models } else { - throw new Exception(""); + Exception exception = new Exception("Platform Map Id " + Id + " does not exist."); + Logging.Log(Logging.LogType.Critical, "Platform Map", "Platform Map Id " + Id + " does not exist.", exception); + throw exception; } } @@ -162,11 +164,14 @@ namespace gaseous_server.Models { foreach (string alternateName in item.AlternateNames) { - sql = "INSERT INTO PlatformMap_AlternateNames (Id, Name) VALUES (@Id, @Name);"; - dbDict.Clear(); - dbDict.Add("Id", item.IGDBId); - dbDict.Add("Name", alternateName); - db.ExecuteCMD(sql, dbDict); + if (alternateName != null) + { + sql = "INSERT INTO PlatformMap_AlternateNames (Id, Name) VALUES (@Id, @Name);"; + dbDict.Clear(); + dbDict.Add("Id", item.IGDBId); + dbDict.Add("Name", alternateName); + db.ExecuteCMD(sql, dbDict); + } } } diff --git a/gaseous-server/ProcessQueue.cs b/gaseous-server/ProcessQueue.cs index b5164f9..59c16fe 100644 --- a/gaseous-server/ProcessQueue.cs +++ b/gaseous-server/ProcessQueue.cs @@ -68,49 +68,49 @@ namespace gaseous_server _LastResult = ""; _LastError = null; - Logging.Log(Logging.LogType.Information, "Timered Event", "Executing " + _ItemType); + Logging.Log(Logging.LogType.Debug, "Timered Event", "Executing " + _ItemType); try { switch (_ItemType) { case QueueItemType.SignatureIngestor: - Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Signature Ingestor"); + Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Signature Ingestor"); SignatureIngestors.XML.XMLIngestor tIngest = new SignatureIngestors.XML.XMLIngestor(); - Logging.Log(Logging.LogType.Information, "Signature Import", "Processing TOSEC files"); + Logging.Log(Logging.LogType.Debug, "Signature Import", "Processing TOSEC files"); tIngest.Import(Path.Combine(Config.LibraryConfiguration.LibrarySignatureImportDirectory, "TOSEC"), gaseous_signature_parser.parser.SignatureParser.TOSEC); - Logging.Log(Logging.LogType.Information, "Signature Import", "Processing MAME Arcade files"); + Logging.Log(Logging.LogType.Debug, "Signature Import", "Processing MAME Arcade files"); tIngest.Import(Path.Combine(Config.LibraryConfiguration.LibrarySignatureImportDirectory, "MAME Arcade"), gaseous_signature_parser.parser.SignatureParser.MAMEArcade); - Logging.Log(Logging.LogType.Information, "Signature Import", "Processing MAME MESS files"); + Logging.Log(Logging.LogType.Debug, "Signature Import", "Processing MAME MESS files"); tIngest.Import(Path.Combine(Config.LibraryConfiguration.LibrarySignatureImportDirectory, "MAME MESS"), gaseous_signature_parser.parser.SignatureParser.MAMEMess); break; case QueueItemType.TitleIngestor: - Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Title Ingestor"); + Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Title Ingestor"); Classes.ImportGames importGames = new Classes.ImportGames(Config.LibraryConfiguration.LibraryImportDirectory); break; case QueueItemType.MetadataRefresh: - Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Metadata Refresher"); + Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Metadata Refresher"); Classes.MetadataManagement.RefreshMetadata(true); break; case QueueItemType.OrganiseLibrary: - Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Library Organiser"); + Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Library Organiser"); Classes.ImportGame.OrganiseLibrary(); break; case QueueItemType.LibraryScan: - Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Library Scanner"); + Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Library Scanner"); Classes.ImportGame.LibraryScan(); break; case QueueItemType.CollectionCompiler: - Logging.Log(Logging.LogType.Information, "Timered Event", "Starting Collection Compiler"); + Logging.Log(Logging.LogType.Debug, "Timered Event", "Starting Collection Compiler"); Classes.Collections.CompileCollections(); break; } diff --git a/gaseous-server/Support/PlatformMap.json b/gaseous-server/Support/PlatformMap.json index 1551a84..f6a4e12 100644 --- a/gaseous-server/Support/PlatformMap.json +++ b/gaseous-server/Support/PlatformMap.json @@ -1 +1 @@ -[{"igdbId":50,"igdbName":"3DO Interactive Multiplayer","igdbSlug":"3do","alternateNames":["3DO","3DO Interactive Multiplayer"],"extensions":{"supportedFileExtensions":[".CHD",".CUE",".ISO",".ZIP"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"3do","webEmulator":{"type":"EmulatorJS","core":"3do"},"bios":[{"hash":"8970fc987ab89a7f64da9f8a8c4333ff","description":"Shootout At Old Tucson","filename":"3do_arcade_saot.bin"},{"hash":"8639fd5e549bd6238cfee79e3e749114","description":"Goldstar GDO-101M","filename":"goldstar.bin"},{"hash":"f47264dd47fe30f73ab3c010015c155b","description":"Panasonic FZ-1","filename":"panafz1.bin"},{"hash":"1477bda80dc33731a65468c1f5bcbee9","description":"Panasonic FZ-10 [RSA Patch]","filename":"panafz10-norsa.bin"},{"hash":"51f2f43ae2f3508a14d9f56597e2d3ce","description":"Panasonic FZ-10","filename":"panafz10.bin"},{"hash":"cf11bbb5a16d7af9875cca9de9a15e09","description":"Panasonic FZ-10-E [Anvil RSA Patch]","filename":"panafz10e-anvil-norsa.bin"},{"hash":"a48e6746bd7edec0f40cff078f0bb19f","description":"Panasonic FZ-10-E [Anvil]","filename":"panafz10e-anvil.bin"},{"hash":"f6c71de7470d16abe4f71b1444883dc8","description":"Panasonic FZ-1J [RSA Patch]","filename":"panafz1j-norsa.bin"},{"hash":"a496cfdded3da562759be3561317b605","description":"Panasonic FZ-1J","filename":"panafz1j.bin"},{"hash":"35fa1a1ebaaeea286dc5cd15487c13ea","description":"Sanyo IMP-21J TRY","filename":"sanyotry.bin"}]},{"igdbId":16,"igdbName":"Amiga","igdbSlug":"amiga","alternateNames":["Amiga","Commodore Amiga"],"extensions":{"supportedFileExtensions":[".ADF",".ADZ",".DMS",".FDI",".HDF",".HDZ",".IPF",".LHA",".UAE",".ZIP"],"uniqueFileExtensions":[".ADF",".ADZ",".DMS",".FDI",".HDF",".HDZ",".LHA",".UAE"]},"retroPieDirectoryName":"amiga","webEmulator":{"type":"","core":""},"bios":[{"hash":"85ad74194e87c08904327de1a9443b7a","description":"Kickstart v1.2 rev 33.180","filename":"kick33180.A500"},{"hash":"82a21c1890cae844b3df741f2762d48d","description":"Kickstart v1.3 rev 34.005","filename":"kick34005.A500"},{"hash":"89da1838a24460e4b93f4f0c5d92d48d","description":"CDTV extended ROM v1.00","filename":"kick34005.CDTV"},{"hash":"dc10d7bdd1b6f450773dfb558477c230","description":"Kickstart v2.04 rev 37.175","filename":"kick37175.A500"},{"hash":"5f8924d013dd57a89cf349f4cdedc6b1","description":"CD32 Kickstart v3.1 rev 40.060","filename":"kick40060.CD32"},{"hash":"f2f241bf094168cfb9e7805dc2856433","description":"CD32 KS + extended v3.1 rev 40.060","filename":"kick40060.CD32"},{"hash":"bb72565701b1b6faece07d68ea5da639","description":"CD32 extended ROM rev 40.060","filename":"kick40060.CD32.ext"},{"hash":"e40a5dfb3d017ba8779faba30cbd1c8e","description":"Kickstart v3.1 rev 40.063","filename":"kick40063.A600"},{"hash":"646773759326fbac3b2311fd8c8793ee","description":"Kickstart v3.1 rev 40.068","filename":"kick40068.A1200"},{"hash":"9bdedde6a4f33555b4a270c8ca53297d","description":"Kickstart v3.1 rev 40.068","filename":"kick40068.A4000"}]},{"igdbId":25,"igdbName":"Amstrad CPC","igdbSlug":"acpc","alternateNames":["acpc","Amstrad CPC","Colour Personal Computer"],"extensions":{"supportedFileExtensions":[".CPC",".DSK"],"uniqueFileExtensions":[".CPC"]},"retroPieDirectoryName":"amstradcpc","webEmulator":{"type":"","core":""},"bios":[]},{"igdbId":75,"igdbName":"Apple II","igdbSlug":"appleii","alternateNames":["Apple ][","Apple 2","Apple II","appleii"],"extensions":{"supportedFileExtensions":[".DSK"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"apple2","webEmulator":{"type":"","core":""},"bios":[]},{"igdbId":52,"igdbName":"Arcade","igdbSlug":"arcade","alternateNames":["Arcade"],"extensions":{"supportedFileExtensions":[".ZIP"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"","webEmulator":{"type":"EmulatorJS","core":"arcade"},"bios":[]},{"igdbId":59,"igdbName":"Atari 2600","igdbSlug":"atari2600","alternateNames":["Atari 2600","Atari VCS","atari2600"],"extensions":{"supportedFileExtensions":[".7Z",".A26",".BIN",".GZ",".ROM",".ZIP"],"uniqueFileExtensions":[".A26"]},"retroPieDirectoryName":"atari2600","webEmulator":{"type":"EmulatorJS","core":"atari2600"},"bios":[]},{"igdbId":66,"igdbName":"Atari 5200","igdbSlug":"atari5200","alternateNames":["Atari 5200","Atari 5200 SuperSystem","atari5200"],"extensions":{"supportedFileExtensions":[".A52",".ATR",".ATR.GZ",".BAS",".BIN",".CAR",".DCM",".XEX",".XFD",".XFD.GZ"],"uniqueFileExtensions":[".A52",".ATR",".ATR.GZ",".BAS",".CAR",".DCM",".XEX",".XFD",".XFD.GZ"]},"retroPieDirectoryName":"atari5200","webEmulator":{"type":"EmulatorJS","core":"a5200"},"bios":[{"hash":"281f20ea4320404ec820fb7ec0693b38","description":"BIOS for the Atari 5200","filename":"5200.rom"}]},{"igdbId":60,"igdbName":"Atari 7800","igdbSlug":"atari7800","alternateNames":["Atari 7800","Atari 7800 ProSystem","Atari VCS","atari7800"],"extensions":{"supportedFileExtensions":[".7Z",".A78",".BIN",".ZIP"],"uniqueFileExtensions":[".A78"]},"retroPieDirectoryName":"atari7800","webEmulator":{"type":"EmulatorJS","core":"atari7800"},"bios":[{"hash":"0763f1ffb006ddbe32e52d497ee848ae","description":"7800 BIOS - Optional","filename":"7800 BIOS (U).rom"}]},{"igdbId":62,"igdbName":"Atari Jaguar","igdbSlug":"jaguar","alternateNames":["Atari Jaguar","Jaguar"],"extensions":{"supportedFileExtensions":[".J64",".JAG"],"uniqueFileExtensions":[".J64",".JAG"]},"retroPieDirectoryName":"atarijaguar","webEmulator":{"type":"EmulatorJS","core":"jaguar"},"bios":[]},{"igdbId":61,"igdbName":"Atari Lynx","igdbSlug":"lynx","alternateNames":["Atari Lynx","Lynx"],"extensions":{"supportedFileExtensions":[".7Z",".LNX",".ZIP"],"uniqueFileExtensions":[".LNX"]},"retroPieDirectoryName":"atarilynx","webEmulator":{"type":"EmulatorJS","core":"lynx"},"bios":[{"hash":"fcd403db69f54290b51035d82f835e7b","description":"BIOS for the Atari Lynx","filename":"lynxboot.img"}]},{"igdbId":63,"igdbName":"Atari ST/STE","igdbSlug":"atari-st","alternateNames":["Atari ST","Atari ST/STE","Atari STE","atari-st"],"extensions":{"supportedFileExtensions":[".CTR",".IMG",".IPF",".MSA",".RAW",".ROM",".ST",".STX",".ZIP"],"uniqueFileExtensions":[".CTR",".MSA",".RAW",".ST",".STX"]},"retroPieDirectoryName":"atarist","webEmulator":{"type":"","core":""},"bios":[{"hash":"C1C57CE48E8EE4135885CEE9E63A68A2","description":"TOS","filename":"tos.img"}]},{"igdbId":15,"igdbName":"Commodore C64/128/MAX","igdbSlug":"c64","alternateNames":["C64","C64/C128/MAX","Commodore C128","Commodore C64","Commodore C64/128/MAX","Commodore C64DTV"],"extensions":{"supportedFileExtensions":[".CRT",".D64",".D80",".D81",".G64",".M3U",".PRG",".T64",".TAP",".X64",".ZIP"],"uniqueFileExtensions":[".CRT",".D64",".D80",".D81",".G64",".PRG",".T64",".X64"]},"retroPieDirectoryName":"c64","webEmulator":{"type":"","core":""},"bios":[{"hash":"1b1e985ea5325a1f46eb7fd9681707bf","description":"JiffyDOS 1541 drive BIOS","filename":"JiffyDOS_1541-II.bin"},{"hash":"41c6cc528e9515ffd0ed9b180f8467c0","description":"JiffyDOS 1571 drive BIOS","filename":"JiffyDOS_1571_repl310654.bin"},{"hash":"20b6885c6dc2d42c38754a365b043d71","description":"JiffyDOS 1581 drive BIOS","filename":"JiffyDOS_1581.bin"},{"hash":"be09394f0576cf81fa8bacf634daf9a2","description":"JiffyDOS C64 Kernal","filename":"JiffyDOS_C64.bin"}]},{"igdbId":33,"igdbName":"Game Boy","igdbSlug":"gb","alternateNames":["Game Boy","GB"],"extensions":{"supportedFileExtensions":[".7Z",".GB",".ZIP"],"uniqueFileExtensions":[".GB"]},"retroPieDirectoryName":"gb","webEmulator":{"type":"EmulatorJS","core":"gb"},"bios":[{"hash":"32fbbd84168d3482956eb3c5051637f5and","description":"BIOS for Game Boy","filename":"gb_bios.bin"},{"hash":"d574d4f9c12f305074798f54c091a8b4","description":"Super Game Boy","filename":"sgb_bios.bin"}]},{"igdbId":24,"igdbName":"Game Boy Advance","igdbSlug":"gba","alternateNames":["Game Boy Advance","GBA"],"extensions":{"supportedFileExtensions":[".7Z",".GBA",".ZIP"],"uniqueFileExtensions":[".GBA"]},"retroPieDirectoryName":"gba","webEmulator":{"type":"EmulatorJS","core":"gba"},"bios":[{"hash":"32FBBD84168D3482956EB3C5051637F5","description":"[BIOS] Nintendo Game Boy Boot ROM (World) (Rev 1).gb","filename":"gb_bios.bin"},{"hash":"a860e8c0b6d573d191e4ec7db1b1e4f6","description":"[BIOS] Game Boy Advance (World).gba","filename":"gba_bios.bin"},{"hash":"DBFCE9DB9DEAA2567F6A84FDE55F9680","description":"[BIOS] Nintendo Game Boy Color Boot ROM (World).gbc","filename":"gbc_bios.bin"},{"hash":"D574D4F9C12F305074798F54C091A8B4","description":"SGB-CPU (World) (Enhancement Chip).bin","filename":"sgb_bios.bin"}]},{"igdbId":22,"igdbName":"Game Boy Color","igdbSlug":"gbc","alternateNames":["Game Boy Color","GBC"],"extensions":{"supportedFileExtensions":[".7Z",".GBC",".ZIP"],"uniqueFileExtensions":[".GBC"]},"retroPieDirectoryName":"gbc","webEmulator":{"type":"EmulatorJS","core":"gb"},"bios":[{"hash":"dbfce9db9deaa2567f6a84fde55f9680","description":"BIOS for Game Boy Color","filename":"gbc_bios.bin"},{"hash":"d574d4f9c12f305074798f54c091a8b4","description":"Super Game Boy","filename":"sgb_bios.bin"}]},{"igdbId":4,"igdbName":"Nintendo 64","igdbSlug":"n64","alternateNames":["N64","Nintendo 64"],"extensions":{"supportedFileExtensions":[".N64",".V64",".Z64",".ZIP"],"uniqueFileExtensions":[".N64",".V64",".Z64"]},"retroPieDirectoryName":"n64","webEmulator":{"type":"EmulatorJS","core":"n64"},"bios":[]},{"igdbId":20,"igdbName":"Nintendo DS","igdbSlug":"nds","alternateNames":["NDS"],"extensions":{"supportedFileExtensions":[".BIN",".NDS",".ZIP"],"uniqueFileExtensions":[".NDS"]},"retroPieDirectoryName":"nds","webEmulator":{"type":"EmulatorJS","core":"nds"},"bios":[{"hash":"df692a80a5b1bc90728bc3dfc76cd948","description":"ARM7 BIOS","filename":"bios7.bin"},{"hash":"a392174eb3e572fed6447e956bde4b25","description":"ARM9 BIOS","filename":"bios9.bin"},{"hash":"145eaef5bd3037cbc247c213bb3da1b3","description":"NDS Firmware","filename":"firmware.bin"}]},{"igdbId":18,"igdbName":"Nintendo Entertainment System","igdbSlug":"nes","alternateNames":["NES","Nintendo Entertainment System","Nintendo Famicom & Entertainment System"],"extensions":{"supportedFileExtensions":[".7Z",".FDS",".NES",".NEZ",".UNF",".UNIF",".ZIP"],"uniqueFileExtensions":[".FDS",".NES",".NEZ",".UNF",".UNIF"]},"retroPieDirectoryName":"nes","webEmulator":{"type":"EmulatorJS","core":"nes"},"bios":[{"hash":"ca30b50f880eb660a320674ed365ef7a","description":"Family Computer Disk System BIOS - Required for Famicom Disk System emulation","filename":"disksys.rom"},{"hash":"7f98d77d7a094ad7d069b74bd553ec98","description":"Game Genie add-on cartridge - Required for Game Genei Add-on emulation (Only supported on the fceumm core)","filename":"gamegenie.nes"}]},{"igdbId":21,"igdbName":"Nintendo GameCube","igdbSlug":"ngc","alternateNames":["GameCube","GC","GCN","ngc","Nintendo GameCube"],"extensions":{"supportedFileExtensions":[".CISO",".GC",".GCM",".GCZ",".ISO",".RVZ"],"uniqueFileExtensions":[".CISO",".GC",".GCM",".GCZ",".RVZ"]},"retroPieDirectoryName":"gc","webEmulator":{"type":"","core":""},"bios":[]},{"igdbId":7,"igdbName":"PlayStation","igdbSlug":"ps","alternateNames":["PlayStation","PS","PS1","PSOne","PSX","PSX, PSOne, PS","Sony PlayStation"],"extensions":{"supportedFileExtensions":[".CCD",".CHD",".CUE",".EXE",".ISO",".M3U",".PBP",".TOC"],"uniqueFileExtensions":[".CCD",".EXE",".PBP",".TOC"]},"retroPieDirectoryName":"psx","webEmulator":{"type":"EmulatorJS","core":"psx"},"bios":[{"hash":"8dd7d5296a650fac7319bce665a6a53c","description":"PS1 JP BIOS - Required for JP games","filename":"scph5500.bin"},{"hash":"490f666e1afb15b7362b406ed1cea246","description":"PS1 US BIOS - Required for US games","filename":"scph5501.bin"},{"hash":"32736f17079d0b2b7024407c39bd3050","description":"PS1 EU BIOS - Required for EU games","filename":"scph5502.bin"}]},{"igdbId":30,"igdbName":"Sega 32X","igdbSlug":"sega32","alternateNames":["Sega 32X","Sega32","Sega32X"],"extensions":{"supportedFileExtensions":[".32X",".7Z",".BIN",".MD",".SMD",".ZIP"],"uniqueFileExtensions":[".32X"]},"retroPieDirectoryName":"sega32x","webEmulator":{"type":"EmulatorJS","core":"sega32x"},"bios":[]},{"igdbId":78,"igdbName":"Sega CD","igdbSlug":"segacd","alternateNames":["Mega CD","Sega CD","Sega Mega-CD & Sega CD","segacd"],"extensions":{"supportedFileExtensions":[".BIN",".CHD",".CUE",".ISO",".M3U"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"segacd","webEmulator":{"type":"EmulatorJS","core":"segaCD"},"bios":[{"hash":"e66fa1dc5820d254611fdcdba0662372","description":"MegaCD EU BIOS - Required","filename":"bios_CD_E.bin"},{"hash":"278a9397d192149e84e820ac621a8edd","description":"MegaCD JP BIOS - Required","filename":"bios_CD_J.bin"},{"hash":"2efd74e3232ff260e371b99f84024f7f","description":"SegaCD US BIOS - Required","filename":"bios_CD_U.bin"}]},{"igdbId":35,"igdbName":"Sega Game Gear","igdbSlug":"gamegear","alternateNames":["Game Gear","gamegear","GG","Sega Game Gear"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".GG",".ZIP"],"uniqueFileExtensions":[".GG"]},"retroPieDirectoryName":"gamegear","webEmulator":{"type":"EmulatorJS","core":"segaGG"},"bios":[{"hash":"672e104c3be3a238301aceffc3b23fd6","description":"GameGear BIOS (bootrom) - Optional","filename":"bios.gg"}]},{"igdbId":64,"igdbName":"Sega Master System/Mark III","igdbSlug":"sms","alternateNames":["Sega Mark III & Master System","Sega Master System","Sega Master System/Mark III","sms","SMS, Mark III"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".SMS",".ZIP"],"uniqueFileExtensions":[".SMS"]},"retroPieDirectoryName":"mastersystem","webEmulator":{"type":"EmulatorJS","core":"segaMS"},"bios":[{"hash":"840481177270d5642a14ca71ee72844c","description":"MasterSystem EU BIOS","filename":"bios_E.sms"},{"hash":"24a519c53f67b00640d0048ef7089105","description":"MasterSystem JP BIOS","filename":"bios_J.sms"},{"hash":"840481177270d5642a14ca71ee72844c","description":"MasterSystem US BIOS","filename":"bios_U.sms"}]},{"igdbId":29,"igdbName":"Sega Mega Drive/Genesis","igdbSlug":"genesis-slash-megadrive","alternateNames":["genesis-slash-megadrive","Sega Genesis","Sega Mega Drive","Sega Mega Drive & Genesis","Sega Mega Drive/Genesis"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".GEN",".MD",".SG",".SMD",".ZIP"],"uniqueFileExtensions":[".GEN",".SG"]},"retroPieDirectoryName":"megadrive","webEmulator":{"type":"EmulatorJS","core":"segaMD"},"bios":[{"hash":"45e298905a08f9cfb38fd504cd6dbc84","description":"MegaDrive TMSS startup ROM","filename":"bios_MD.bin"}]},{"igdbId":32,"igdbName":"Sega Saturn","igdbSlug":"saturn","alternateNames":["Hi-Saturn","JVC Saturn","JVC Saturn, Hi-Saturn, Samsung Saturn, V-Saturn","Samsung Saturn","Saturn","Sega Saturn","V-Saturn"],"extensions":{"supportedFileExtensions":[".BIN",".CUE",".ISO",".MDF"],"uniqueFileExtensions":[".MDF"]},"retroPieDirectoryName":"saturn","webEmulator":{"type":"EmulatorJS","core":"segaSaturn"},"bios":[{"hash":"af5828fdff51384f99b3c4926be27762","description":"Saturn BIOS","filename":"saturn_bios.bin"}]},{"igdbId":19,"igdbName":"Super Nintendo Entertainment System","igdbSlug":"snes","alternateNames":["Nintendo Super Famicom & Super Entertainment System","SNES","SNES, Super Nintendo","Super Nintendo","Super Nintendo Entertainment System"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".BS",".FIG",".MGD",".SFC",".SMC",".SWC",".ZIP"],"uniqueFileExtensions":[".BS",".FIG",".MGD",".SFC",".SMC",".SWC"]},"retroPieDirectoryName":"snes","webEmulator":{"type":"EmulatorJS","core":"snes"},"bios":[]},{"igdbId":87,"igdbName":"Virtual Boy","igdbSlug":"virtualboy","alternateNames":["VB"],"extensions":{"supportedFileExtensions":[".7Z",".VB",".ZIP"],"uniqueFileExtensions":[".VB"]},"retroPieDirectoryName":"vb","webEmulator":{"type":"EmulatorJS","core":"vb"},"bios":[]},{"igdbId":26,"igdbName":"ZX Spectrum","igdbSlug":"zxs","alternateNames":["Sinclair ZX","Sinclair ZX Spectrum","ZX Spectrum","zxs"],"extensions":{"supportedFileExtensions":[".DSK",".GZ",".IMG",".MGT",".SCL",".SNA",".SZX",".TAP",".TRD",".TZX",".UDI",".Z80"],"uniqueFileExtensions":[".MGT",".SCL",".SNA",".SZX",".TRD",".TZX",".UDI",".Z80"]},"retroPieDirectoryName":"zxspectrum","webEmulator":{"type":"","core":""},"bios":[]}] \ No newline at end of file +[{"igdbId":50,"igdbName":"3DO Interactive Multiplayer","igdbSlug":"3do","alternateNames":["3DO","3DO Interactive Multiplayer"],"extensions":{"supportedFileExtensions":[".CHD",".CUE",".ISO",".ZIP"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"3do","webEmulator":{"type":"EmulatorJS","core":"3do"},"bios":[{"hash":"8970fc987ab89a7f64da9f8a8c4333ff","description":"Shootout At Old Tucson","filename":"3do_arcade_saot.bin"},{"hash":"8639fd5e549bd6238cfee79e3e749114","description":"Goldstar GDO-101M","filename":"goldstar.bin"},{"hash":"f47264dd47fe30f73ab3c010015c155b","description":"Panasonic FZ-1","filename":"panafz1.bin"},{"hash":"1477bda80dc33731a65468c1f5bcbee9","description":"Panasonic FZ-10 [RSA Patch]","filename":"panafz10-norsa.bin"},{"hash":"51f2f43ae2f3508a14d9f56597e2d3ce","description":"Panasonic FZ-10","filename":"panafz10.bin"},{"hash":"cf11bbb5a16d7af9875cca9de9a15e09","description":"Panasonic FZ-10-E [Anvil RSA Patch]","filename":"panafz10e-anvil-norsa.bin"},{"hash":"a48e6746bd7edec0f40cff078f0bb19f","description":"Panasonic FZ-10-E [Anvil]","filename":"panafz10e-anvil.bin"},{"hash":"f6c71de7470d16abe4f71b1444883dc8","description":"Panasonic FZ-1J [RSA Patch]","filename":"panafz1j-norsa.bin"},{"hash":"a496cfdded3da562759be3561317b605","description":"Panasonic FZ-1J","filename":"panafz1j.bin"},{"hash":"35fa1a1ebaaeea286dc5cd15487c13ea","description":"Sanyo IMP-21J TRY","filename":"sanyotry.bin"}]},{"igdbId":16,"igdbName":"Amiga","igdbSlug":"amiga","alternateNames":["Amiga","Commodore Amiga"],"extensions":{"supportedFileExtensions":[".ADF",".ADZ",".DMS",".FDI",".HDF",".HDZ",".IPF",".LHA",".UAE",".ZIP"],"uniqueFileExtensions":[".ADF",".ADZ",".DMS",".FDI",".HDF",".HDZ",".LHA",".UAE"]},"retroPieDirectoryName":"amiga","webEmulator":{"type":"","core":""},"bios":[{"hash":"85ad74194e87c08904327de1a9443b7a","description":"Kickstart v1.2 rev 33.180","filename":"kick33180.A500"},{"hash":"82a21c1890cae844b3df741f2762d48d","description":"Kickstart v1.3 rev 34.005","filename":"kick34005.A500"},{"hash":"89da1838a24460e4b93f4f0c5d92d48d","description":"CDTV extended ROM v1.00","filename":"kick34005.CDTV"},{"hash":"dc10d7bdd1b6f450773dfb558477c230","description":"Kickstart v2.04 rev 37.175","filename":"kick37175.A500"},{"hash":"5f8924d013dd57a89cf349f4cdedc6b1","description":"CD32 Kickstart v3.1 rev 40.060","filename":"kick40060.CD32"},{"hash":"f2f241bf094168cfb9e7805dc2856433","description":"CD32 KS + extended v3.1 rev 40.060","filename":"kick40060.CD32"},{"hash":"bb72565701b1b6faece07d68ea5da639","description":"CD32 extended ROM rev 40.060","filename":"kick40060.CD32.ext"},{"hash":"e40a5dfb3d017ba8779faba30cbd1c8e","description":"Kickstart v3.1 rev 40.063","filename":"kick40063.A600"},{"hash":"646773759326fbac3b2311fd8c8793ee","description":"Kickstart v3.1 rev 40.068","filename":"kick40068.A1200"},{"hash":"9bdedde6a4f33555b4a270c8ca53297d","description":"Kickstart v3.1 rev 40.068","filename":"kick40068.A4000"}]},{"igdbId":25,"igdbName":"Amstrad CPC","igdbSlug":"acpc","alternateNames":["acpc","Amstrad CPC","Colour Personal Computer"],"extensions":{"supportedFileExtensions":[".CPC",".DSK"],"uniqueFileExtensions":[".CPC"]},"retroPieDirectoryName":"amstradcpc","webEmulator":{"type":"","core":""},"bios":[]},{"igdbId":75,"igdbName":"Apple II","igdbSlug":"appleii","alternateNames":["Apple ][","Apple 2","Apple II","appleii"],"extensions":{"supportedFileExtensions":[".DSK"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"apple2","webEmulator":{"type":"","core":""},"bios":[]},{"igdbId":52,"igdbName":"Arcade","igdbSlug":"arcade","alternateNames":["Arcade"],"extensions":{"supportedFileExtensions":[".ZIP"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"","webEmulator":{"type":"EmulatorJS","core":"arcade"},"bios":[]},{"igdbId":59,"igdbName":"Atari 2600","igdbSlug":"atari2600","alternateNames":["Atari 2600","Atari VCS","atari2600"],"extensions":{"supportedFileExtensions":[".7Z",".A26",".BIN",".GZ",".ROM",".ZIP"],"uniqueFileExtensions":[".A26"]},"retroPieDirectoryName":"atari2600","webEmulator":{"type":"EmulatorJS","core":"atari2600"},"bios":[]},{"igdbId":66,"igdbName":"Atari 5200","igdbSlug":"atari5200","alternateNames":["Atari 5200","Atari 5200 SuperSystem","atari5200"],"extensions":{"supportedFileExtensions":[".A52",".ATR",".ATR.GZ",".BAS",".BIN",".CAR",".DCM",".XEX",".XFD",".XFD.GZ"],"uniqueFileExtensions":[".A52",".ATR",".ATR.GZ",".BAS",".CAR",".DCM",".XEX",".XFD",".XFD.GZ"]},"retroPieDirectoryName":"atari5200","webEmulator":{"type":"EmulatorJS","core":"a5200"},"bios":[{"hash":"281f20ea4320404ec820fb7ec0693b38","description":"BIOS for the Atari 5200","filename":"5200.rom"}]},{"igdbId":60,"igdbName":"Atari 7800","igdbSlug":"atari7800","alternateNames":["Atari 7800","Atari 7800 ProSystem","Atari VCS","atari7800"],"extensions":{"supportedFileExtensions":[".7Z",".A78",".BIN",".ZIP"],"uniqueFileExtensions":[".A78"]},"retroPieDirectoryName":"atari7800","webEmulator":{"type":"EmulatorJS","core":"atari7800"},"bios":[{"hash":"0763f1ffb006ddbe32e52d497ee848ae","description":"7800 BIOS - Optional","filename":"7800 BIOS (U).rom"}]},{"igdbId":62,"igdbName":"Atari Jaguar","igdbSlug":"jaguar","alternateNames":["Atari Jaguar","Jaguar"],"extensions":{"supportedFileExtensions":[".J64",".JAG"],"uniqueFileExtensions":[".J64",".JAG"]},"retroPieDirectoryName":"atarijaguar","webEmulator":{"type":"EmulatorJS","core":"jaguar"},"bios":[]},{"igdbId":61,"igdbName":"Atari Lynx","igdbSlug":"lynx","alternateNames":["Atari Lynx","Lynx"],"extensions":{"supportedFileExtensions":[".7Z",".LNX",".ZIP"],"uniqueFileExtensions":[".LNX"]},"retroPieDirectoryName":"atarilynx","webEmulator":{"type":"EmulatorJS","core":"lynx"},"bios":[{"hash":"fcd403db69f54290b51035d82f835e7b","description":"BIOS for the Atari Lynx","filename":"lynxboot.img"}]},{"igdbId":63,"igdbName":"Atari ST/STE","igdbSlug":"atari-st","alternateNames":["Atari ST","Atari ST/STE","Atari STE","atari-st"],"extensions":{"supportedFileExtensions":[".CTR",".IMG",".IPF",".MSA",".RAW",".ROM",".ST",".STX",".ZIP"],"uniqueFileExtensions":[".CTR",".MSA",".RAW",".ST",".STX"]},"retroPieDirectoryName":"atarist","webEmulator":{"type":"","core":""},"bios":[{"hash":"C1C57CE48E8EE4135885CEE9E63A68A2","description":"TOS","filename":"tos.img"}]},{"igdbId":15,"igdbName":"Commodore C64/128/MAX","igdbSlug":"c64","alternateNames":["C64","C64/C128/MAX","Commodore C128","Commodore C64","Commodore C64/128/MAX","Commodore C64DTV"],"extensions":{"supportedFileExtensions":[".CRT",".D64",".D80",".D81",".G64",".M3U",".PRG",".T64",".TAP",".X64",".ZIP"],"uniqueFileExtensions":[".CRT",".D64",".D80",".D81",".G64",".PRG",".T64",".X64"]},"retroPieDirectoryName":"c64","webEmulator":{"type":"","core":""},"bios":[{"hash":"1b1e985ea5325a1f46eb7fd9681707bf","description":"JiffyDOS 1541 drive BIOS","filename":"JiffyDOS_1541-II.bin"},{"hash":"41c6cc528e9515ffd0ed9b180f8467c0","description":"JiffyDOS 1571 drive BIOS","filename":"JiffyDOS_1571_repl310654.bin"},{"hash":"20b6885c6dc2d42c38754a365b043d71","description":"JiffyDOS 1581 drive BIOS","filename":"JiffyDOS_1581.bin"},{"hash":"be09394f0576cf81fa8bacf634daf9a2","description":"JiffyDOS C64 Kernal","filename":"JiffyDOS_C64.bin"}]},{"igdbId":33,"igdbName":"Game Boy","igdbSlug":"gb","alternateNames":["Game Boy","GB"],"extensions":{"supportedFileExtensions":[".7Z",".GB",".ZIP"],"uniqueFileExtensions":[".GB"]},"retroPieDirectoryName":"gb","webEmulator":{"type":"EmulatorJS","core":"gb"},"bios":[{"hash":"32fbbd84168d3482956eb3c5051637f5and","description":"BIOS for Game Boy","filename":"gb_bios.bin"},{"hash":"d574d4f9c12f305074798f54c091a8b4","description":"Super Game Boy","filename":"sgb_bios.bin"}]},{"igdbId":24,"igdbName":"Game Boy Advance","igdbSlug":"gba","alternateNames":["Game Boy Advance","GBA"],"extensions":{"supportedFileExtensions":[".7Z",".GBA",".ZIP"],"uniqueFileExtensions":[".GBA"]},"retroPieDirectoryName":"gba","webEmulator":{"type":"EmulatorJS","core":"gba"},"bios":[{"hash":"32FBBD84168D3482956EB3C5051637F5","description":"[BIOS] Nintendo Game Boy Boot ROM (World) (Rev 1).gb","filename":"gb_bios.bin"},{"hash":"a860e8c0b6d573d191e4ec7db1b1e4f6","description":"[BIOS] Game Boy Advance (World).gba","filename":"gba_bios.bin"},{"hash":"DBFCE9DB9DEAA2567F6A84FDE55F9680","description":"[BIOS] Nintendo Game Boy Color Boot ROM (World).gbc","filename":"gbc_bios.bin"},{"hash":"D574D4F9C12F305074798F54C091A8B4","description":"SGB-CPU (World) (Enhancement Chip).bin","filename":"sgb_bios.bin"}]},{"igdbId":22,"igdbName":"Game Boy Color","igdbSlug":"gbc","alternateNames":["Game Boy Color","GBC"],"extensions":{"supportedFileExtensions":[".7Z",".GBC",".ZIP"],"uniqueFileExtensions":[".GBC"]},"retroPieDirectoryName":"gbc","webEmulator":{"type":"EmulatorJS","core":"gb"},"bios":[{"hash":"dbfce9db9deaa2567f6a84fde55f9680","description":"BIOS for Game Boy Color","filename":"gbc_bios.bin"},{"hash":"d574d4f9c12f305074798f54c091a8b4","description":"Super Game Boy","filename":"sgb_bios.bin"}]},{"igdbId":4,"igdbName":"Nintendo 64","igdbSlug":"n64","alternateNames":["N64","Nintendo 64"],"extensions":{"supportedFileExtensions":[".N64",".V64",".Z64",".ZIP"],"uniqueFileExtensions":[".N64",".V64",".Z64"]},"retroPieDirectoryName":"n64","webEmulator":{"type":"EmulatorJS","core":"n64"},"bios":[]},{"igdbId":20,"igdbName":"Nintendo DS","igdbSlug":"nds","alternateNames":["NDS"],"extensions":{"supportedFileExtensions":[".BIN",".NDS",".ZIP"],"uniqueFileExtensions":[".NDS"]},"retroPieDirectoryName":"nds","webEmulator":{"type":"EmulatorJS","core":"nds"},"bios":[{"hash":"df692a80a5b1bc90728bc3dfc76cd948","description":"ARM7 BIOS","filename":"bios7.bin"},{"hash":"a392174eb3e572fed6447e956bde4b25","description":"ARM9 BIOS","filename":"bios9.bin"},{"hash":"145eaef5bd3037cbc247c213bb3da1b3","description":"NDS Firmware","filename":"firmware.bin"}]},{"igdbId":18,"igdbName":"Nintendo Entertainment System","igdbSlug":"nes","alternateNames":["NES","Nintendo Entertainment System","Nintendo Famicom & Entertainment System"],"extensions":{"supportedFileExtensions":[".7Z",".FDS",".NES",".NEZ",".UNF",".UNIF",".ZIP"],"uniqueFileExtensions":[".FDS",".NES",".NEZ",".UNF",".UNIF"]},"retroPieDirectoryName":"nes","webEmulator":{"type":"EmulatorJS","core":"nes"},"bios":[{"hash":"ca30b50f880eb660a320674ed365ef7a","description":"Family Computer Disk System BIOS - Required for Famicom Disk System emulation","filename":"disksys.rom"},{"hash":"7f98d77d7a094ad7d069b74bd553ec98","description":"Game Genie add-on cartridge - Required for Game Genei Add-on emulation (Only supported on the fceumm core)","filename":"gamegenie.nes"}]},{"igdbId":21,"igdbName":"Nintendo GameCube","igdbSlug":"ngc","alternateNames":["GameCube","GC","GCN","ngc","Nintendo GameCube"],"extensions":{"supportedFileExtensions":[".CISO",".GC",".GCM",".GCZ",".ISO",".RVZ"],"uniqueFileExtensions":[".CISO",".GC",".GCM",".GCZ",".RVZ"]},"retroPieDirectoryName":"gc","webEmulator":{"type":"","core":""},"bios":[]},{"igdbId":7,"igdbName":"PlayStation","igdbSlug":"ps","alternateNames":["PlayStation","PS","PS1","PSOne","PSX","PSX, PSOne, PS","Sony PlayStation"],"extensions":{"supportedFileExtensions":[".CCD",".CHD",".CUE",".EXE",".ISO",".M3U",".PBP",".TOC"],"uniqueFileExtensions":[".CCD",".EXE",".PBP",".TOC"]},"retroPieDirectoryName":"psx","webEmulator":{"type":"EmulatorJS","core":"psx"},"bios":[{"hash":"8dd7d5296a650fac7319bce665a6a53c","description":"PS1 JP BIOS - Required for JP games","filename":"scph5500.bin"},{"hash":"490f666e1afb15b7362b406ed1cea246","description":"PS1 US BIOS - Required for US games","filename":"scph5501.bin"},{"hash":"32736f17079d0b2b7024407c39bd3050","description":"PS1 EU BIOS - Required for EU games","filename":"scph5502.bin"}]},{"igdbId":30,"igdbName":"Sega 32X","igdbSlug":"sega32","alternateNames":["Sega 32X","Sega32","Sega32X"],"extensions":{"supportedFileExtensions":[".32X",".7Z",".BIN",".MD",".ZIP"],"uniqueFileExtensions":[".32X"]},"retroPieDirectoryName":"sega32x","webEmulator":{"type":"EmulatorJS","core":"sega32x"},"bios":[]},{"igdbId":78,"igdbName":"Sega CD","igdbSlug":"segacd","alternateNames":["Mega CD","Sega CD","Sega Mega-CD & Sega CD","segacd"],"extensions":{"supportedFileExtensions":[".BIN",".CHD",".CUE",".ISO",".M3U"],"uniqueFileExtensions":[]},"retroPieDirectoryName":"segacd","webEmulator":{"type":"EmulatorJS","core":"segaCD"},"bios":[{"hash":"e66fa1dc5820d254611fdcdba0662372","description":"MegaCD EU BIOS - Required","filename":"bios_CD_E.bin"},{"hash":"278a9397d192149e84e820ac621a8edd","description":"MegaCD JP BIOS - Required","filename":"bios_CD_J.bin"},{"hash":"2efd74e3232ff260e371b99f84024f7f","description":"SegaCD US BIOS - Required","filename":"bios_CD_U.bin"}]},{"igdbId":35,"igdbName":"Sega Game Gear","igdbSlug":"gamegear","alternateNames":["Game Gear","gamegear","GG","Sega Game Gear"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".GG",".ZIP"],"uniqueFileExtensions":[".GG"]},"retroPieDirectoryName":"gamegear","webEmulator":{"type":"EmulatorJS","core":"segaGG"},"bios":[{"hash":"672e104c3be3a238301aceffc3b23fd6","description":"GameGear BIOS (bootrom) - Optional","filename":"bios.gg"}]},{"igdbId":64,"igdbName":"Sega Master System/Mark III","igdbSlug":"sms","alternateNames":["Sega Mark III & Master System","Sega Master System","Sega Master System/Mark III","sms","SMS, Mark III"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".SMS",".ZIP"],"uniqueFileExtensions":[".SMS"]},"retroPieDirectoryName":"mastersystem","webEmulator":{"type":"EmulatorJS","core":"segaMS"},"bios":[{"hash":"840481177270d5642a14ca71ee72844c","description":"MasterSystem EU BIOS","filename":"bios_E.sms"},{"hash":"24a519c53f67b00640d0048ef7089105","description":"MasterSystem JP BIOS","filename":"bios_J.sms"},{"hash":"840481177270d5642a14ca71ee72844c","description":"MasterSystem US BIOS","filename":"bios_U.sms"}]},{"igdbId":29,"igdbName":"Sega Mega Drive/Genesis","igdbSlug":"genesis-slash-megadrive","alternateNames":["genesis-slash-megadrive","Sega Genesis","Sega Mega Drive","Sega Mega Drive & Genesis","Sega Mega Drive/Genesis"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".GEN",".MD",".SG",".SMD",".ZIP"],"uniqueFileExtensions":[".GEN",".SG"]},"retroPieDirectoryName":"megadrive","webEmulator":{"type":"EmulatorJS","core":"segaMD"},"bios":[{"hash":"45e298905a08f9cfb38fd504cd6dbc84","description":"MegaDrive TMSS startup ROM","filename":"bios_MD.bin"}]},{"igdbId":32,"igdbName":"Sega Saturn","igdbSlug":"saturn","alternateNames":["Hi-Saturn","JVC Saturn","JVC Saturn, Hi-Saturn, Samsung Saturn, V-Saturn","Samsung Saturn","Saturn","Sega Saturn","V-Saturn"],"extensions":{"supportedFileExtensions":[".BIN",".CUE",".ISO",".MDF"],"uniqueFileExtensions":[".MDF"]},"retroPieDirectoryName":"saturn","webEmulator":{"type":"EmulatorJS","core":"segaSaturn"},"bios":[{"hash":"af5828fdff51384f99b3c4926be27762","description":"Saturn BIOS","filename":"saturn_bios.bin"}]},{"igdbId":19,"igdbName":"Super Nintendo Entertainment System","igdbSlug":"snes","alternateNames":["Nintendo Super Famicom & Super Entertainment System","SNES","SNES, Super Nintendo","Super Nintendo","Super Nintendo Entertainment System"],"extensions":{"supportedFileExtensions":[".7Z",".BIN",".BS",".FIG",".MGD",".SFC",".SMC",".SWC",".ZIP"],"uniqueFileExtensions":[".BS",".FIG",".MGD",".SFC",".SMC",".SWC"]},"retroPieDirectoryName":"snes","webEmulator":{"type":"EmulatorJS","core":"snes"},"bios":[]},{"igdbId":87,"igdbName":"Virtual Boy","igdbSlug":"virtualboy","alternateNames":["VB"],"extensions":{"supportedFileExtensions":[".7Z",".VB",".ZIP"],"uniqueFileExtensions":[".VB"]},"retroPieDirectoryName":"vb","webEmulator":{"type":"EmulatorJS","core":"vb"},"bios":[]},{"igdbId":26,"igdbName":"ZX Spectrum","igdbSlug":"zxs","alternateNames":["Sinclair ZX","Sinclair ZX Spectrum","ZX Spectrum","zxs"],"extensions":{"supportedFileExtensions":[".DSK",".GZ",".IMG",".MGT",".SCL",".SNA",".SZX",".TAP",".TRD",".TZX",".UDI",".Z80"],"uniqueFileExtensions":[".MGT",".SCL",".SNA",".SZX",".TRD",".TZX",".UDI",".Z80"]},"retroPieDirectoryName":"zxspectrum","webEmulator":{"type":"","core":""},"bios":[]}] \ No newline at end of file diff --git a/gaseous-server/wwwroot/pages/settings/logs.html b/gaseous-server/wwwroot/pages/settings/logs.html index 42b37ba..69f2924 100644 --- a/gaseous-server/wwwroot/pages/settings/logs.html +++ b/gaseous-server/wwwroot/pages/settings/logs.html @@ -3,7 +3,7 @@ - +
@@ -21,6 +21,7 @@ [ ['Event Time', 'logs_table_cell_150px'], ['Severity', 'logs_table_cell_150px'], + 'Process', 'Message' ], '', @@ -29,18 +30,26 @@ ); for (var i = 0; i < result.length; i++) { - var exceptionString = ''; - if (result[i].exceptionValue) { - exceptionString = "

Exception

" + syntaxHighlight(JSON.stringify(result[i].exceptionValue, null, 2)).replace(/\\n/g, "
") + "
"; - } - var newRow = [ moment(result[i].eventTime).fromNow(), result[i].eventType, - result[i].process + " - " + result[i].message + exceptionString + result[i].process, + result[i].message ]; - newTable.appendChild(createTableRow(false, newRow, 'romrow', 'romcell logs_table_cell')); + newTable.appendChild(createTableRow(false, newRow, 'romrow logs_table_row_' + result[i].eventType, 'romcell logs_table_cell')); + + if (result[i].exceptionValue) { + var exceptionString = "

Exception

" + syntaxHighlight(JSON.stringify(result[i].exceptionValue, null, 2)).replace(/\\n/g, "
") + "
"; + var exRow = document.createElement('tr'); + var leadCell = document.createElement('td'); + exRow.appendChild(leadCell); + var exCell = document.createElement('td'); + exCell.colSpan = '3'; + exCell.innerHTML = exceptionString; + exRow.appendChild(exCell); + newTable.appendChild(exRow); + } } } ); diff --git a/gaseous-server/wwwroot/styles/style.css b/gaseous-server/wwwroot/styles/style.css index 84865dd..e18a251 100644 --- a/gaseous-server/wwwroot/styles/style.css +++ b/gaseous-server/wwwroot/styles/style.css @@ -893,6 +893,22 @@ button:disabled { vertical-align: top; } +.logs_table_row_Information:hover { + background: rgba(42, 41, 150, 0.3); +} + +.logs_table_row_Warning:hover { + background: rgba(139, 150, 41, 0.3); +} + +.logs_table_row_Critical:hover { + background: rgba(150, 41, 41, 0.3); +} + +.logs_table_row_Debug:hover { + background: rgba(150, 41, 135, 0.3); +} + .logs_table_exception { margin-right: 10px; padding: 5px; diff --git a/gaseous-tools/Config.cs b/gaseous-tools/Config.cs index 870b576..9573b73 100644 --- a/gaseous-tools/Config.cs +++ b/gaseous-tools/Config.cs @@ -82,7 +82,7 @@ namespace gaseous_tools { get { - string logFileExtension = "json"; + string logFileExtension = "txt"; string logPathName = Path.Combine(LogPath, "Server Log " + DateTime.Now.ToUniversalTime().ToString("yyyyMMdd") + "." + logFileExtension); return logPathName; @@ -468,7 +468,8 @@ namespace gaseous_tools { public bool DebugLogging = false; - public int LogRetention = 30; + // log retention in days + public int LogRetention = 7; public enum LoggingFormat { diff --git a/gaseous-tools/Database.cs b/gaseous-tools/Database.cs index 5b81da0..1411d07 100644 --- a/gaseous-tools/Database.cs +++ b/gaseous-tools/Database.cs @@ -236,7 +236,7 @@ namespace gaseous_tools { DataTable RetTable = new DataTable(); - Logging.Log(Logging.LogType.Debug, "Database", "Connecting to database"); + Logging.Log(Logging.LogType.Debug, "Database", "Connecting to database", null, true); MySqlConnection conn = new MySqlConnection(DBConn); conn.Open(); @@ -254,11 +254,11 @@ namespace gaseous_tools try { - Logging.Log(Logging.LogType.Debug, "Database", "Executing sql: '" + SQL + "'"); + Logging.Log(Logging.LogType.Debug, "Database", "Executing sql: '" + SQL + "'", null, true); if (Parameters.Count > 0) { string dictValues = string.Join(";", Parameters.Select(x => string.Join("=", x.Key, x.Value))); - Logging.Log(Logging.LogType.Debug, "Database", "Parameters: " + dictValues); + Logging.Log(Logging.LogType.Debug, "Database", "Parameters: " + dictValues, null, true); } RetTable.Load(cmd.ExecuteReader()); } catch (Exception ex) { @@ -267,7 +267,7 @@ namespace gaseous_tools Trace.WriteLine("Full exception: " + ex.ToString()); } - Logging.Log(Logging.LogType.Debug, "Database", "Closing database connection"); + Logging.Log(Logging.LogType.Debug, "Database", "Closing database connection", null, true); conn.Close(); return RetTable; diff --git a/gaseous-tools/Database/MySQL/gaseous-1002.sql b/gaseous-tools/Database/MySQL/gaseous-1002.sql index 747d286..aaba6cf 100644 --- a/gaseous-tools/Database/MySQL/gaseous-1002.sql +++ b/gaseous-tools/Database/MySQL/gaseous-1002.sql @@ -44,3 +44,15 @@ CREATE TABLE `PlatformMap_Bios` ( `Description` LONGTEXT NOT NULL, `Hash` VARCHAR(45) NOT NULL, PRIMARY KEY (`Id`, `Filename`, `Hash`)); + +CREATE TABLE `ServerLogs` ( + `Id` BIGINT NOT NULL AUTO_INCREMENT, + `EventTime` DATETIME NOT NULL, + `EventType` INT NOT NULL, + `Process` VARCHAR(100) NOT NULL, + `Message` LONGTEXT NOT NULL, + `Exception` LONGTEXT NULL, + PRIMARY KEY (`Id`)); + +ALTER TABLE `PlatformVersion` +CHANGE COLUMN `PlatformLogo` `PlatformLogo` BIGINT NULL DEFAULT NULL ; \ No newline at end of file diff --git a/gaseous-tools/Logging.cs b/gaseous-tools/Logging.cs index ca95e11..dca94f0 100644 --- a/gaseous-tools/Logging.cs +++ b/gaseous-tools/Logging.cs @@ -1,4 +1,5 @@ using System; +using System.Data; using System.Diagnostics; using System.Reflection; using System.Reflection.Metadata.Ecma335; @@ -7,12 +8,7 @@ namespace gaseous_tools { public class Logging { - // when was the last clean - static DateTime LastRetentionClean = DateTime.UtcNow; - // how often to clean in hours - const int RetentionCleanInterval = 1; - - static public void Log(LogType EventType, string ServerProcess, string Message, Exception? ExceptionValue = null) + static public void Log(LogType EventType, string ServerProcess, string Message, Exception? ExceptionValue = null, bool LogToDiskOnly = false) { LogItem logItem = new LogItem { @@ -20,7 +16,7 @@ namespace gaseous_tools EventType = EventType, Process = ServerProcess, Message = Message, - ExceptionValue = ExceptionValue + ExceptionValue = Common.ReturnValueIfNull(ExceptionValue, "").ToString() }; bool AllowWrite = false; @@ -65,67 +61,73 @@ namespace gaseous_tools Console.WriteLine(TraceOutput); Console.ResetColor(); - Newtonsoft.Json.JsonSerializerSettings serializerSettings = new Newtonsoft.Json.JsonSerializerSettings + if (LogToDiskOnly == false) { - NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, - Formatting = Newtonsoft.Json.Formatting.None - }; - serializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()); + Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); + string sql = "DELETE FROM ServerLogs WHERE EventTime < @EventRententionDate; INSERT INTO ServerLogs (EventTime, EventType, Process, Message, Exception) VALUES (@EventTime, @EventType, @Process, @Message, @Exception);"; + Dictionary dbDict = new Dictionary(); + dbDict.Add("EventRententionDate", DateTime.UtcNow.AddDays(Config.LoggingConfiguration.LogRetention * -1)); + dbDict.Add("EventTime", logItem.EventTime); + dbDict.Add("EventType", logItem.EventType); + dbDict.Add("Process", logItem.Process); + dbDict.Add("Message", logItem.Message); + dbDict.Add("Exception", Common.ReturnValueIfNull(logItem.ExceptionValue, "").ToString()); - // write log file - string JsonOutput = Newtonsoft.Json.JsonConvert.SerializeObject(logItem, serializerSettings); - File.AppendAllText(Config.LogFilePath, JsonOutput); - } - - // quick clean before we go - if (LastRetentionClean.AddHours(RetentionCleanInterval) < DateTime.UtcNow) - { - LogCleanup(); + try + { + db.ExecuteCMD(sql, dbDict); + } + catch (Exception ex) + { + LogToDisk(logItem, TraceOutput, ex); + } + } + else + { + LogToDisk(logItem, TraceOutput, null); + } } } - static public List GetLogs() { - string logData = File.ReadAllText(Config.LogFilePath); + static void LogToDisk(LogItem logItem, string TraceOutput, Exception? exception) + { + if (exception != null) + { + // dump the error + File.AppendAllText(Config.LogFilePath, logItem.EventTime.ToString("yyyyMMdd HHmmss") + ": " + logItem.EventType.ToString() + ": " + logItem.Process + ": " + logItem.Message + Environment.NewLine + exception.ToString()); + + + // something went wrong writing to the db + File.AppendAllText(Config.LogFilePath, logItem.EventTime.ToString("yyyyMMdd HHmmss") + ": The following event was unable to be written to the log database:"); + } + + File.AppendAllText(Config.LogFilePath, TraceOutput); + } + + static public List GetLogs() + { + Database db = new gaseous_tools.Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); + string sql = "SELECT * FROM ServerLogs ORDER BY Id DESC"; + DataTable dataTable = db.ExecuteCMD(sql); List logs = new List(); - if (File.Exists(Config.LogFilePath)) + foreach (DataRow row in dataTable.Rows) { - StreamReader sr = new StreamReader(Config.LogFilePath); - while (!sr.EndOfStream) + LogItem log = new LogItem { - LogItem logItem = Newtonsoft.Json.JsonConvert.DeserializeObject(sr.ReadLine()); - logs.Add(logItem); - } - logs.Reverse(); + EventTime = DateTime.Parse(((DateTime)row["EventTime"]).ToString("yyyy-MM-ddThh:mm:ss") + 'Z'), + EventType = (LogType)row["EventType"], + Process = (string)row["Process"], + Message = (string)row["Message"], + ExceptionValue = (string)row["Exception"] + }; + + logs.Add(log); } return logs; } - static public void LogCleanup() - { - Log(LogType.Information, "Log Cleanup", "Purging log files older than " + Config.LoggingConfiguration.LogRetention + " days"); - LastRetentionClean = DateTime.UtcNow; - - string[] files = Directory.GetFiles(Config.LogPath, "Server Log *.json"); - - foreach (string file in files) - { - FileInfo fi = new FileInfo(file); - if (fi.LastAccessTime.AddDays(Config.LoggingConfiguration.LogRetention) < DateTime.Now) - { - try - { - fi.Delete(); - } - catch - { - Log(LogType.Warning, "Log Cleanup", "Failed purging log " + fi.FullName); - } - } - } - } - public enum LogType { Information = 0, @@ -151,7 +153,7 @@ namespace gaseous_tools _Message = value; } } - public Exception? ExceptionValue { get; set; } + public string? ExceptionValue { get; set; } } } }