Difference between revisions of "Logcontrol.plist"
From Elite Wiki
Cholmondely (talk | contribs) (Page Created (needs work) - I don't really understand what I'm doing, but none of this seems to be on the wiki anywhere...) |
Cholmondely (talk | contribs) (→Examples: Included the text) |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| + | [[File:Latest.log example.png|thumb|600px|right|Latest.log output]] | ||
The logcontrol.plist allows one to select the output to the [[Latest.log]] | The logcontrol.plist allows one to select the output to the [[Latest.log]] | ||
| − | + | __TOC__ | |
| + | <div style="clear: both"></div> | ||
== Current logcontrol.plist == | == Current logcontrol.plist == | ||
/* This file controls the visibility of various error messages and groups of error messages, or “message classes”. It can be selectively overridden using a separate logcontrol.plist file in your AddOns folder, or a dictionary called “logging-enable” in Oolite’s preferences. | /* This file controls the visibility of various error messages and groups of error messages, or “message classes”. It can be selectively overridden using a separate logcontrol.plist file in your AddOns folder, or a dictionary called “logging-enable” in Oolite’s preferences. | ||
| − | + | ||
| − | Message classes can be enabled or disabled temporarily using the debug console macros | + | Message classes can be enabled or disabled temporarily using the debug console macros :logOn and :logOff, as in “:logOn $scriptDebugOn”. |
| − | + | ||
| − | |||
Classes which are related, but not hierarchically, can be controlled using metaclasses, whose names start with a $. See $error etc. below for examples. | Classes which are related, but not hierarchically, can be controlled using metaclasses, whose names start with a $. See $error etc. below for examples. | ||
| − | + | ||
Log output can be modified using the following preference keys: | Log output can be modified using the following preference keys: | ||
logging-show-class | logging-show-class | ||
| Line 17: | Line 18: | ||
“logging-show-class” defaults to YES. The others default to NO. | “logging-show-class” defaults to YES. The others default to NO. | ||
“logging-echo-to-stderr” causes log information to be printed to the standard error file in addition to the log file. | “logging-echo-to-stderr” causes log information to be printed to the standard error file in addition to the log file. | ||
| − | */ | + | */ |
| − | + | ||
| − | { | + | { |
/*** Special message classes ***/ | /*** Special message classes ***/ | ||
_default = yes; // Fallback value for otherwise undefined classes. Must be yes or no. | _default = yes; // Fallback value for otherwise undefined classes. Must be yes or no. | ||
| − | // _override | + | // _override = yes; // Use to force display of all messages (or suppress all messages). Must be yes or no. |
| Line 29: | Line 30: | ||
$entityState = no; | $entityState = no; | ||
$error = yes; // Most errors, ranging from minor to major. Should probably always be enabled. | $error = yes; // Most errors, ranging from minor to major. Should probably always be enabled. | ||
| − | $oxpDevelopment | + | $oxpDevelopment = no; // Warnings useful to OXP writers but not in general play |
| − | $scriptDebugOn | + | $scriptDebugOn = no; // This metaclass is set by the debugOn and debugOff script actions. |
| − | $scriptError | + | $scriptError = $error; |
| − | $shaderDebugOn | + | $shaderDebugOn = no; // Enabled by 's' key while paused, disabled by 'n' while paused. |
| − | $shaderError | + | $shaderError = $error; |
| − | $troubleShootingDump | + | $troubleShootingDump = yes; |
| − | + | ||
| − | + | ||
/*** Common programming problems ***/ | /*** Common programming problems ***/ | ||
| − | general.error | + | general.error = $error; |
general.error.subclassResponsibility = inherit; | general.error.subclassResponsibility = inherit; | ||
| − | general.error.parameterError | + | general.error.parameterError = inherit; |
| − | general.error.deprecatedMethod | + | general.error.deprecatedMethod = inherit; |
| − | general.error.inconsistentState | + | general.error.inconsistentState = inherit; |
| − | exception | + | exception = yes; |
| − | exception.backtrace | + | exception.backtrace = no; |
| − | files.notFound | + | files.notFound = $error; // Failure to load a file. |
| − | files.notLoaded | + | files.notLoaded = $error; // A file should have been loaded at some earlier point, but wasn’t. |
/*** Module-specific message classes ***/ | /*** Module-specific message classes ***/ | ||
| − | ai | + | ai = yes; // AI messages are shown if a ship's reportAIMessages property is set, for instance through the JavaScript console. |
| − | ai.message.receive | + | ai.message.receive = inherit; |
| − | ai.takeAction | + | ai.takeAction = inherit; |
| − | ai.takeAction.noAction | + | ai.takeAction.noAction = inherit; |
| − | ai.takeAction.orphaned | + | ai.takeAction.orphaned = $aiError; |
| − | ai.takeAction.debugMessage | + | ai.takeAction.debugMessage = inherit; |
| − | ai.takeAction.badSelector | + | ai.takeAction.badSelector = inherit; |
| − | ai.error | + | ai.error = $aiError; |
| − | ai.error.recursion | + | ai.error.recursion = inherit; |
| − | ai.error.recursion.stackTrace | + | ai.error.recursion.stackTrace = inherit; |
| − | ai.error.stackOverflow | + | ai.error.stackOverflow = inherit; |
| − | ai.error.stackOverflow.dump | + | ai.error.stackOverflow.dump = inherit; |
| − | ai.setTakeOffFromPlanet.noPlanet | + | ai.setTakeOffFromPlanet.noPlanet = $aiError; |
| − | ai.suggestEscort | + | ai.suggestEscort = inherit; |
| − | ai.suggestEscort.refused | + | ai.suggestEscort.refused = inherit; |
| − | ai.rollD.invalidValue | + | ai.rollD.invalidValue = $aiError; |
| − | ai.syntax.setCoordinates | + | ai.syntax.setCoordinates = $aiError; |
| − | ai.scanForNearestShipMatchingPredicate.compile.failed = $aiError; | + | ai.scanForNearestShipMatchingPredicate.compile.failed = $aiError; |
| − | ai.invalidFormat | + | ai.invalidFormat = $aiError; |
| − | ai.invalidFormat.state | + | ai.invalidFormat.state = inherit; |
| − | ai.invalidFormat.handler | + | ai.invalidFormat.handler = inherit; |
| − | ai.invalidFormat.action | + | ai.invalidFormat.action = inherit; |
| − | ai.unpermittedMethod | + | ai.unpermittedMethod = $aiError; |
| − | ai.load | + | ai.load = no; |
| − | ai.load.failed.unknownAI | + | ai.load.failed.unknownAI = $aiError; |
| − | ai.invalid.notAStation | + | ai.invalid.notAStation = $aiError; // Warning when station AI message is used on non-station. |
| − | asyncWorkManager.dispatchMethod | + | asyncWorkManager.dispatchMethod = no; |
| − | beacon.list | + | beacon.list = $scriptDebugOn; |
| − | character | + | character = yes; |
| − | character.load.unknownSystem | + | character.load.unknownSystem = $error; |
| − | + | ||
| − | + | $dataCacheStatus = no; | |
| − | + | $dataCacheError = $error; | |
| − | + | $dataCacheDebug = no; | |
| − | + | dataCache.found = $dataCacheStatus; | |
| − | + | dataCache.upToDate = $dataCacheStatus; | |
| − | + | dataCache.notFound = $dataCacheError; | |
| − | + | dataCache.profile = no; | |
| − | + | dataCache.rebuild = yes; | |
| − | + | dataCache.rebuild.pathsChanged = inherit; | |
| − | + | dataCache.rebuild.datesChanged = inherit; | |
| − | + | dataCache.rebuild.explicitFlush = inherit; | |
| − | + | dataCache.willWrite = $dataCacheStatus; | |
| − | + | dataCache.write.success = $dataCacheStatus; | |
| − | + | dataCache.write.buildPath.failed = $dataCacheError; | |
| − | + | dataCache.write.failed = $dataCacheError; | |
| − | + | dataCache.write.serialize.failed = $dataCacheError; | |
| − | + | dataCache.retrieve.success = $dataCacheDebug; | |
| − | + | dataCache.retrieve.failed = $dataCacheDebug; | |
| − | + | dataCache.set.success = $dataCacheDebug; | |
| − | + | dataCache.set.failed = $dataCacheError; | |
| − | + | dataCache.remove.success = $dataCacheDebug; | |
| − | + | dataCache.clear.success = $dataCacheDebug; | |
| − | + | dataCache.prune = $dataCacheDebug; | |
| − | + | ||
| − | + | display.context.create.failed = $error; | |
| − | + | display.mode.found = no; | |
| − | + | display.mode.found.failed = $error; | |
| − | + | display.mode.list = no; | |
| − | + | display.mode.list.none = $error; | |
| − | + | display.mode.list.native = yes; | |
| − | + | display.mode.list.native.failed = $error; | |
| − | + | display.mode.switch.failed = $error; | |
| − | + | display.mode.unknown = $error; | |
| − | + | display.initGL = no; | |
| − | + | ||
| − | + | display.macLegacy = no; // TEMP | |
| − | + | ||
| − | + | effectData.load.progress = no; | |
| − | + | effectData.load.done = no; | |
| − | + | ||
| − | + | $linkedListError = $error; | |
| − | + | entity.behaviour.changed = $entityState; | |
| − | + | entity.linkedList = $scriptDebugOn; // Management/verification of the lists used to track the relative position of entities. | |
| − | + | entity.linkedList.add = inherit; | |
| − | + | entity.linkedList.add.error = $linkedListError; | |
| − | + | entity.linkedList.remove = inherit; | |
| − | + | entity.linkedList.remove.error = $linkedListError; | |
| − | + | entity.linkedList.verify = no; //$linkedListError; // Non-fatal errors that look scary. | |
| − | + | entity.linkedList.verify.error = inherit; | |
| − | + | entity.linkedList.verify.rebuild = inherit; | |
| − | + | entity.linkedList.update.error = $linkedListError; | |
| − | + | ||
| − | + | equip.buy.mounted = no; | |
| − | + | equip.buy.mounted.failed = $scriptError; | |
| − | + | ||
| − | + | exit.context = yes; // Log why game quit, for debugging cases of game quitting in an orderly yet unexpected way. | |
| − | + | ||
| − | + | fuelPrices = no; | |
| − | + | ||
| − | + | gui.reset = no; | |
| − | + | ||
| − | + | input.keyMapping = no; | |
| − | + | input.keyMapping.codeOutOfRange = inherit; | |
| − | + | input.keyMapping.keyPress = no; | |
| − | + | input.keyMapping.keyPress.keyDown = inherit; | |
| − | + | input.keyMapping.keyPress.keyUp = inherit; | |
| − | + | input.mouseMode.changed = no; | |
| − | + | ||
| − | + | interface.missingCallback = $scriptError; | |
| − | + | ||
| − | + | joystick.init = yes; // SDL only | |
| − | + | joystick.connect = yes; // Rest are Mac only | |
| − | + | joystick.connect.element = no; | |
| − | + | joystick.remove = no; | |
| − | + | joystick.reject = no; // Lists HID devices that are not considered joysticks. | |
| − | + | ||
| − | + | material.canonicalForm = no; // Extremely verbose logging of normalized material specifier dictionaries. | |
| − | + | ||
| − | + | mesh.load = no; | |
| − | + | mesh.load.cached = inherit; | |
| − | + | mesh.load.uncached = inherit; | |
| − | + | mesh.load.octree.size = no; | |
| − | + | ||
| − | + | mesh.load.error = $error; | |
| − | + | mesh.load.error.badCacheData = inherit; | |
| − | + | ||
| − | + | mesh.load.failed = $error; | |
| − | + | mesh.load.failed.fileNotFound = inherit; | |
| − | + | mesh.load.failed.tooManyVertices = inherit; | |
| − | + | mesh.load.failed.tooManyFaces = inherit; | |
| − | + | ||
| − | + | missile.damage.calc = no; // Debugging of missile damage curves | |
| − | + | ||
| − | + | oxp.versionMismatch = $error; | |
| − | + | ||
| − | + | player.ship = no; | |
| − | + | player.ship.damage = no; | |
| − | + | player.equipmentScript = $scriptDebugOn; | |
| − | + | ||
| − | + | $plistError = $error; | |
| − | + | plist.parse.failed = $plistError; | |
| − | + | plist.wrongType = $plistError; | |
| − | + | ||
| − | + | rendering.opengl.error = no; // Test for and display OpenGL errors | |
| − | + | rendering.opengl.version = $troubleShootingDump; // Display renderer version information at startup | |
| − | + | rendering.opengl.extensions = $troubleShootingDump; // List OpenGL extensions at startup | |
| − | + | rendering.opengl.shader = $troubleShootingDump; | |
| − | + | rendering.opengl.shader.mode = inherit; | |
| − | + | rendering.opengl.shader.support = inherit; // Messages about factors influencing availability of OpenGL shaders | |
| − | + | rendering.opengl.shader.uniform = $shaderDebugOn; | |
| − | + | ||
| − | + | rendering.reset = yes; | |
| − | + | rendering.reset.start = inherit; | |
| − | + | rendering.reset.end = no; | |
| − | + | ||
| − | + | resourceManager.foundFile = no; // Tells you where all assets (models, textures, sounds) are found. Very verbose! | |
| − | + | ||
| − | + | save.failed = $error; | |
| − | + | save.success = no; | |
| − | + | quickSave.failed = $error; | |
| − | + | load.failed = $error; | |
| − | + | ||
| − | + | setup.ship.badEntry.subentities = inherit; | |
| − | + | ||
| − | + | screenshot = yes; | |
| − | + | ||
| − | + | script.addShips.failed = $scriptError; | |
| − | + | script.missionDescription = $scriptError; | |
| − | + | script.missionDescription.noMissionText = inherit; | |
| − | + | script.missionDescription.noMissionKey = inherit; | |
| − | + | ||
| − | + | script.debug = $scriptDebugOn; | |
| − | + | script.debug.message = inherit; // debugMessage: script action | |
| − | + | script.debug.onOff = inherit; // debugOn/debugOff script actions | |
| − | + | script.debug.setSunNovaIn = inherit; | |
| − | + | ||
| − | + | script.debug.note = inherit; | |
| − | + | script.debug.note.awardCargo = inherit; | |
| − | + | script.debug.note.removeAllCargo = inherit; | |
| − | + | script.debug.note.useSpecialCargo = inherit; | |
| − | + | script.debug.note.addShips = inherit; | |
| − | + | script.debug.note.set = inherit; | |
| − | + | script.debug.note.showShipyardModel = inherit; | |
| − | + | script.debug.note.showShipModel = inherit; | |
| − | + | script.debug.note.setFuelLeak = inherit; | |
| − | + | script.debug.note.addPlanet = inherit; | |
| − | + | ||
| − | + | script.debug.syntax = $scriptError; // Messages relating to script formatting | |
| − | + | script.debug.syntax.badConditional = inherit; | |
| − | + | script.debug.syntax.badComparison = inherit; | |
| − | + | script.debug.syntax.action = inherit; | |
| − | + | script.debug.syntax.action.noneSpecified = inherit; | |
| − | + | script.debug.syntax.action.badSelector = inherit; | |
| − | + | script.debug.syntax.action.badElement = inherit; | |
| − | + | script.debug.syntax.scriptCondition.noneSpecified = inherit; | |
| − | + | script.debug.syntax.setPlanetInfo = inherit; | |
| − | + | script.debug.syntax.awardCargo = inherit; | |
| − | + | script.debug.syntax.messageShipAIs = inherit; | |
| − | + | script.debug.syntax.addShips = inherit; | |
| − | + | script.debug.syntax.set = inherit; | |
| − | + | script.debug.syntax.reset = inherit; | |
| − | + | script.debug.syntax.subtract = inherit; | |
| − | + | ||
| − | + | script.error = $scriptError; | |
| − | + | script.error.addPlanet.keyNotFound = inherit; | |
| − | + | script.error.addPlanet.noPosition = inherit; | |
| − | + | script.error.exception = inherit; | |
| − | + | script.error.fallthrough = inherit; | |
| − | + | script.error.removeAllCargo.notDocked = inherit; | |
| − | + | script.error.unexpectedOperator = inherit; | |
| − | + | ||
| − | + | script.javaScript.load.success = $scriptDebugOn; | |
| − | + | script.javaScript.load.failed = $scriptError; | |
| − | + | script.javaScript.init.success = no; | |
| − | + | script.javaScript.init.error = $error; // Fatal start-up error | |
| − | + | script.javaScript.timeLimit = yes; // Script ran for too long and has been killed. | |
| − | + | script.javaScript.willLoad = no; | |
| − | + | ||
| − | + | script.load = no; | |
| − | + | script.load.badName = $scriptError; | |
| − | + | script.load.exception = $error; | |
| − | + | script.load.notFound = $scriptError; | |
| − | + | script.load.parseOK = inherit; | |
| − | + | script.load.unnamed = $scriptError; | |
| − | + | script.load.world.listAll = $troubleShootingDump; // List names and versions of all loaded world scripts at startup. | |
| − | + | ||
| − | + | // These messages are logged whenever Oolite calls a JS script method or runs a legacy script, respectively. | |
| − | + | $reportScriptEntry = no; | |
| − | + | script.javaScript.call = $reportScriptEntry; | |
| − | + | script.legacy.run = $reportScriptEntry; | |
| − | + | ||
| − | + | script.legacy.run.badTarget = $error; | |
| − | + | ||
| − | + | script.deprecated.scriptActionOnTarget = $scriptError; // Warning not to use scriptActionOnTarget: | |
| − | + | ||
| − | + | script.unpermittedMethod = $scriptError; | |
| − | + | ||
| − | + | sdl = no; | |
| − | + | sdl.init.failed = $error; | |
| − | + | sdl.init.audio.failed = $error; | |
| − | + | ||
| − | + | searchPaths.dumpAll = $troubleShootingDump; | |
| − | + | ||
| − | + | $shaderDebug = $shaderDebugOn; | |
| − | + | $shaderError = $error; | |
| − | + | shader.load.noShader = $error; | |
| − | + | shader.uniform = $shaderDebug; | |
| − | + | shader.uniform.set = inherit; // Successfully set a uniform. | |
| − | + | shader.uniform.unSet = inherit; // A uniform went unset or was cleared (either because there was no matching uniform in the shader, or the new uniform could not be set up). | |
| − | + | shader.uniform.badDescription = inherit; // A uniform specified in shipdata.plist could not be set up, because the configuration could not be understood. | |
| − | + | shader.uniform.bind.failed = inherit; // Problem setting up uniform bound to an object property. | |
| − | + | shader.uniform.unpermittedMethod = $shaderError; | |
| − | + | ||
| − | + | // Auditing note: these next four are constructed and do not occur as literals. | |
| − | + | shader.compile.failure = $shaderError; | |
| − | + | shader.compile.validationFailure = $shaderError; | |
| − | + | shader.link.failure = $shaderError; | |
| − | + | shader.link.validationFailure = $shaderError; | |
| − | + | ||
| − | + | ship.noPrimaryRole = no; | |
| − | + | ship.escort = no; | |
| − | + | ship.escort.accept = inherit; | |
| − | + | ship.escort.reject = inherit; | |
| − | + | ||
| − | + | ship.setup.docks = $oxpDevelopment; // Warnings for old-style virtual docks. Generally harmless in actual play. | |
| − | + | ship.setUp.missiles = no; // Warnings when doing extra work to set up missiles without equipment.plist or shipdata.plist entries. Disabled because lots of OXPs trigger them, and there are fallbacks. | |
| − | + | ||
| − | + | shipData.load.shipyard.unknown = yes; // Warning for when shipyard.plist entries do not have matching shipdata.plist entry. | |
| − | + | shipData.load.begin = yes; | |
| − | + | shipData.load.progress = no; | |
| − | + | shipData.load.done = no; | |
| − | + | shipData.load.error = $error; | |
| − | + | shipData.load.warning = $error; | |
| − | + | shipData.load.warning.badFlasher = inherit; | |
| − | + | shipData.load.warning.flasher.badColor = inherit; | |
| − | + | shipData.load.warning.flasher.badSize = inherit; | |
| − | + | shipData.load.warning.flasher.badFraction = inherit; | |
| − | + | shipData.load.warning.turret.badFireRate = inherit; | |
| − | + | shipData.load.warning.turret.badWeaponRange = inherit; | |
| − | + | shipData.load.warning.turret.badWeaponEnergy = inherit; | |
| − | + | shipData.translateSubentity = no; | |
| − | + | shipData.translateSubentity.flasher = inherit; | |
| − | + | shipData.translateSubentity.standard = inherit; | |
| − | + | ||
| − | + | sky.setup = no; | |
| − | + | ||
| − | + | $soundError = $error; | |
| − | + | $soundDebug = no; | |
| − | + | $soundDebugVerbose = $soundDebug; | |
| − | + | sound.customSounds = $soundDebug; | |
| − | + | sound.customSounds.recursion = $soundError; // Circular dependency in customsounds.plist, e.g. [foo] = [bar], [bar] = [foo]. | |
| − | + | sound.load.success = $soundDebug; | |
| − | + | ||
| − | + | // Mac-specific sound messages | |
| − | + | sound.channel.cleanup.success = $soundDebugVerbose; | |
| − | + | sound.channel.cleanup.failed = $soundError; | |
| − | + | sound.channel.cleanup.failed.broken = inherit; | |
| − | + | sound.channel.cleanup.failed.badState = inherit; | |
| − | + | sound.channel.machPortError = $soundError; | |
| − | + | sound.initialization.error = $soundError; | |
| − | + | sound.mixer.outOfChannels = $soundError; | |
| − | + | sound.mixer.inspector.loadFailed = $soundError; | |
| − | + | sound.mixer.replacingBrokenChannel = $soundDebug; | |
| − | + | sound.mixer.failedToConnectChannel = $soundError; | |
| − | + | sound.music.iTunesIntegration.failed = $error; | |
| − | + | sound.play.success = $soundDebugVerbose; | |
| − | + | sound.play.failed = $soundError; | |
| − | + | sound.play.failed.badReuse = inherit; | |
| − | + | sound.play.failed.setupFailed = inherit; | |
| − | + | sound.play.failed.auError = inherit; | |
| − | + | sound.render.undexpectedNull = $soundError; | |
| − | + | sound.streaming.refill = $soundDebugVerbose; | |
| − | + | sound.streaming.loop = $soundDebug; | |
| − | + | sound.streaming.underflow = $soundError; | |
| − | + | sound.virtualringbuffer = $soundError; | |
| − | + | sound.streaming.releaseContext = $soundDebug; | |
| − | + | ||
| − | + | // SDL-specific sound messages | |
| − | + | sound.load.failed = $soundError; | |
| − | + | ||
| − | + | $speechDebug = $soundDebug; | |
| − | + | speech.setup = $speechDebug; | |
| − | + | speech.synthesis = $speechDebug; | |
| − | + | ||
| − | + | startup.progress = no; // Startup progress stages. | |
| − | + | loading.complete = yes; | |
| − | + | ||
| − | + | station.launchShip.impossible = no; // generally cancelled launches due to station having no launch docks are uninteresting | |
| − | + | ||
| − | + | strings.conversion = $scriptError; // Conversion of text to values (vectors, quaternions etc) | |
| − | + | strings.conversion.vector = inherit; | |
| − | + | strings.conversion.quaternion = inherit; | |
| − | + | strings.conversion.vectorAndQuaternion = inherit; | |
| − | + | strings.conversion.randomSeed = inherit; | |
| − | + | ||
| − | + | strings.expand = $scriptError; // Errors encountered when converting [key] and %X-type markers in strings. | |
| − | + | strings.expand.invalidData = inherit; | |
| − | + | strings.expand.invalidJEscape = inherit; | |
| − | + | strings.expand.invalidJEscape.range = inherit; | |
| − | + | strings.expand.invalidSelector = inherit; | |
| − | + | strings.expand.warning = yes; | |
| − | + | strings.expand.warning.emptyKey = inherit; | |
| − | + | strings.expand.warning.invalidOverride = inherit; | |
| + | strings.expand.warning.outOfRangeKey = inherit; | ||
| + | strings.expand.warning.unbalancedClosingBracket = inherit; | ||
| + | strings.expand.warning.unbalancedOpeningBracket = inherit; | ||
| + | strings.expand.warning.unknownExpansion = inherit; | ||
| + | strings.expand.warning.unknownPercentEscape = inherit; | ||
| + | |||
| + | sun.nova = no; // Debug messages for nova | ||
| + | sun.nova.start = inherit; | ||
| + | sun.nova.end = inherit; | ||
| + | |||
| + | $textureDebug = no; | ||
| + | texture.dealloc = $textureDebug; | ||
| + | texture.planet.generate = $textureDebug; | ||
| + | texture.upload = $textureDebug; | ||
| + | |||
| + | texture.generator.queue = $textureDebug; | ||
| + | texture.generator.queue.failed = $error; | ||
| + | |||
| + | texture.load.asyncLoad = $textureDebug; | ||
| + | texture.load.asyncLoad.done = inherit; | ||
| + | texture.load.asyncLoad.exception = $error; | ||
| + | texture.load.noName = $error; | ||
| + | texture.load.rescale = $textureDebug; | ||
| + | texture.load.rescale.maxSize = inherit; | ||
| + | texture.load.unknownType = $error; | ||
| + | |||
| + | texture.reload = $textureDebug; | ||
| + | |||
| + | universe.findSystems.badDistance = $error; | ||
| + | |||
| + | universe.populate = no; // “Populating a system with…” message when generating a star system | ||
| + | universe.populate.witchspace = inherit; | ||
| + | universe.setup.badStation = $scriptError; // Message generated if the main station turns out not to be a station (for instance, this could happen if a non-station ship had the role coriolis). | ||
| + | universe.maxEntitiesDump = no; // Dumps all entities when universe is full (Can be quite verbose) | ||
| + | |||
| + | universe.profile = no; | ||
| + | universe.profile.update = inherit; | ||
| + | universe.profile.draw = inherit; | ||
| + | |||
| + | verifyOXP.verbose = yes; | ||
| + | } | ||
| + | |||
| + | == Examples == | ||
| + | *These are the only known examples: | ||
| + | |||
| + | 1) [[SOTL Altmap]] OXP | ||
| − | + | { | |
| − | + | "cim.sotl.debug" = yes; | |
| − | + | "cim.sotl.error" = yes; | |
| − | + | "cim.sotl.notice" = yes; | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | 2) [[New Cargoes]] OXP | |
| − | |||
| + | { | ||
| + | "CargoTypeExtension.debug" = "no"; | ||
| + | } | ||
== Links == | == Links == | ||
| − | [https://bb.oolite.space/viewtopic.php?t=3208 Ahruman's creation of the Logcontrol.plist] (2007) | + | *[[Latest.log]] |
| + | *[[LogEvents]] OXP automatically adds more events to the Latest.log | ||
| + | *[https://bb.oolite.space/viewtopic.php?t=3208 Ahruman's creation of the Logcontrol.plist] (2007) | ||
[[Category:Oolite scripting]] | [[Category:Oolite scripting]] | ||
Latest revision as of 22:47, 4 July 2024
The logcontrol.plist allows one to select the output to the Latest.log
Contents
Current logcontrol.plist
/* This file controls the visibility of various error messages and groups of error messages, or “message classes”. It can be selectively overridden using a separate logcontrol.plist file in your AddOns folder, or a dictionary called “logging-enable” in Oolite’s preferences.
Message classes can be enabled or disabled temporarily using the debug console macros :logOn and :logOff, as in “:logOn $scriptDebugOn”.
Classes which are related, but not hierarchically, can be controlled using metaclasses, whose names start with a $. See $error etc. below for examples.
Log output can be modified using the following preference keys:
logging-show-class
logging-show-function
logging-show-file-and-line
logging-echo-to-stderr
“logging-show-class” defaults to YES. The others default to NO.
“logging-echo-to-stderr” causes log information to be printed to the standard error file in addition to the log file.
*/
{
/*** Special message classes ***/
_default = yes; // Fallback value for otherwise undefined classes. Must be yes or no.
// _override = yes; // Use to force display of all messages (or suppress all messages). Must be yes or no.
/*** Metaclasses ***/
$aiError = $scriptError;
$entityState = no;
$error = yes; // Most errors, ranging from minor to major. Should probably always be enabled.
$oxpDevelopment = no; // Warnings useful to OXP writers but not in general play
$scriptDebugOn = no; // This metaclass is set by the debugOn and debugOff script actions.
$scriptError = $error;
$shaderDebugOn = no; // Enabled by 's' key while paused, disabled by 'n' while paused.
$shaderError = $error;
$troubleShootingDump = yes;
/*** Common programming problems ***/
general.error = $error;
general.error.subclassResponsibility = inherit;
general.error.parameterError = inherit;
general.error.deprecatedMethod = inherit;
general.error.inconsistentState = inherit;
exception = yes;
exception.backtrace = no;
files.notFound = $error; // Failure to load a file.
files.notLoaded = $error; // A file should have been loaded at some earlier point, but wasn’t.
/*** Module-specific message classes ***/
ai = yes; // AI messages are shown if a ship's reportAIMessages property is set, for instance through the JavaScript console.
ai.message.receive = inherit;
ai.takeAction = inherit;
ai.takeAction.noAction = inherit;
ai.takeAction.orphaned = $aiError;
ai.takeAction.debugMessage = inherit;
ai.takeAction.badSelector = inherit;
ai.error = $aiError;
ai.error.recursion = inherit;
ai.error.recursion.stackTrace = inherit;
ai.error.stackOverflow = inherit;
ai.error.stackOverflow.dump = inherit;
ai.setTakeOffFromPlanet.noPlanet = $aiError;
ai.suggestEscort = inherit;
ai.suggestEscort.refused = inherit;
ai.rollD.invalidValue = $aiError;
ai.syntax.setCoordinates = $aiError;
ai.scanForNearestShipMatchingPredicate.compile.failed = $aiError;
ai.invalidFormat = $aiError;
ai.invalidFormat.state = inherit;
ai.invalidFormat.handler = inherit;
ai.invalidFormat.action = inherit;
ai.unpermittedMethod = $aiError;
ai.load = no;
ai.load.failed.unknownAI = $aiError;
ai.invalid.notAStation = $aiError; // Warning when station AI message is used on non-station.
asyncWorkManager.dispatchMethod = no;
beacon.list = $scriptDebugOn;
character = yes;
character.load.unknownSystem = $error;
$dataCacheStatus = no;
$dataCacheError = $error;
$dataCacheDebug = no;
dataCache.found = $dataCacheStatus;
dataCache.upToDate = $dataCacheStatus;
dataCache.notFound = $dataCacheError;
dataCache.profile = no;
dataCache.rebuild = yes;
dataCache.rebuild.pathsChanged = inherit;
dataCache.rebuild.datesChanged = inherit;
dataCache.rebuild.explicitFlush = inherit;
dataCache.willWrite = $dataCacheStatus;
dataCache.write.success = $dataCacheStatus;
dataCache.write.buildPath.failed = $dataCacheError;
dataCache.write.failed = $dataCacheError;
dataCache.write.serialize.failed = $dataCacheError;
dataCache.retrieve.success = $dataCacheDebug;
dataCache.retrieve.failed = $dataCacheDebug;
dataCache.set.success = $dataCacheDebug;
dataCache.set.failed = $dataCacheError;
dataCache.remove.success = $dataCacheDebug;
dataCache.clear.success = $dataCacheDebug;
dataCache.prune = $dataCacheDebug;
display.context.create.failed = $error;
display.mode.found = no;
display.mode.found.failed = $error;
display.mode.list = no;
display.mode.list.none = $error;
display.mode.list.native = yes;
display.mode.list.native.failed = $error;
display.mode.switch.failed = $error;
display.mode.unknown = $error;
display.initGL = no;
display.macLegacy = no; // TEMP
effectData.load.progress = no;
effectData.load.done = no;
$linkedListError = $error;
entity.behaviour.changed = $entityState;
entity.linkedList = $scriptDebugOn; // Management/verification of the lists used to track the relative position of entities.
entity.linkedList.add = inherit;
entity.linkedList.add.error = $linkedListError;
entity.linkedList.remove = inherit;
entity.linkedList.remove.error = $linkedListError;
entity.linkedList.verify = no; //$linkedListError; // Non-fatal errors that look scary.
entity.linkedList.verify.error = inherit;
entity.linkedList.verify.rebuild = inherit;
entity.linkedList.update.error = $linkedListError;
equip.buy.mounted = no;
equip.buy.mounted.failed = $scriptError;
exit.context = yes; // Log why game quit, for debugging cases of game quitting in an orderly yet unexpected way.
fuelPrices = no;
gui.reset = no;
input.keyMapping = no;
input.keyMapping.codeOutOfRange = inherit;
input.keyMapping.keyPress = no;
input.keyMapping.keyPress.keyDown = inherit;
input.keyMapping.keyPress.keyUp = inherit;
input.mouseMode.changed = no;
interface.missingCallback = $scriptError;
joystick.init = yes; // SDL only
joystick.connect = yes; // Rest are Mac only
joystick.connect.element = no;
joystick.remove = no;
joystick.reject = no; // Lists HID devices that are not considered joysticks.
material.canonicalForm = no; // Extremely verbose logging of normalized material specifier dictionaries.
mesh.load = no;
mesh.load.cached = inherit;
mesh.load.uncached = inherit;
mesh.load.octree.size = no;
mesh.load.error = $error;
mesh.load.error.badCacheData = inherit;
mesh.load.failed = $error;
mesh.load.failed.fileNotFound = inherit;
mesh.load.failed.tooManyVertices = inherit;
mesh.load.failed.tooManyFaces = inherit;
missile.damage.calc = no; // Debugging of missile damage curves
oxp.versionMismatch = $error;
player.ship = no;
player.ship.damage = no;
player.equipmentScript = $scriptDebugOn;
$plistError = $error;
plist.parse.failed = $plistError;
plist.wrongType = $plistError;
rendering.opengl.error = no; // Test for and display OpenGL errors
rendering.opengl.version = $troubleShootingDump; // Display renderer version information at startup
rendering.opengl.extensions = $troubleShootingDump; // List OpenGL extensions at startup
rendering.opengl.shader = $troubleShootingDump;
rendering.opengl.shader.mode = inherit;
rendering.opengl.shader.support = inherit; // Messages about factors influencing availability of OpenGL shaders
rendering.opengl.shader.uniform = $shaderDebugOn;
rendering.reset = yes;
rendering.reset.start = inherit;
rendering.reset.end = no;
resourceManager.foundFile = no; // Tells you where all assets (models, textures, sounds) are found. Very verbose!
save.failed = $error;
save.success = no;
quickSave.failed = $error;
load.failed = $error;
setup.ship.badEntry.subentities = inherit;
screenshot = yes;
script.addShips.failed = $scriptError;
script.missionDescription = $scriptError;
script.missionDescription.noMissionText = inherit;
script.missionDescription.noMissionKey = inherit;
script.debug = $scriptDebugOn;
script.debug.message = inherit; // debugMessage: script action
script.debug.onOff = inherit; // debugOn/debugOff script actions
script.debug.setSunNovaIn = inherit;
script.debug.note = inherit;
script.debug.note.awardCargo = inherit;
script.debug.note.removeAllCargo = inherit;
script.debug.note.useSpecialCargo = inherit;
script.debug.note.addShips = inherit;
script.debug.note.set = inherit;
script.debug.note.showShipyardModel = inherit;
script.debug.note.showShipModel = inherit;
script.debug.note.setFuelLeak = inherit;
script.debug.note.addPlanet = inherit;
script.debug.syntax = $scriptError; // Messages relating to script formatting
script.debug.syntax.badConditional = inherit;
script.debug.syntax.badComparison = inherit;
script.debug.syntax.action = inherit;
script.debug.syntax.action.noneSpecified = inherit;
script.debug.syntax.action.badSelector = inherit;
script.debug.syntax.action.badElement = inherit;
script.debug.syntax.scriptCondition.noneSpecified = inherit;
script.debug.syntax.setPlanetInfo = inherit;
script.debug.syntax.awardCargo = inherit;
script.debug.syntax.messageShipAIs = inherit;
script.debug.syntax.addShips = inherit;
script.debug.syntax.set = inherit;
script.debug.syntax.reset = inherit;
script.debug.syntax.subtract = inherit;
script.error = $scriptError;
script.error.addPlanet.keyNotFound = inherit;
script.error.addPlanet.noPosition = inherit;
script.error.exception = inherit;
script.error.fallthrough = inherit;
script.error.removeAllCargo.notDocked = inherit;
script.error.unexpectedOperator = inherit;
script.javaScript.load.success = $scriptDebugOn;
script.javaScript.load.failed = $scriptError;
script.javaScript.init.success = no;
script.javaScript.init.error = $error; // Fatal start-up error
script.javaScript.timeLimit = yes; // Script ran for too long and has been killed.
script.javaScript.willLoad = no;
script.load = no;
script.load.badName = $scriptError;
script.load.exception = $error;
script.load.notFound = $scriptError;
script.load.parseOK = inherit;
script.load.unnamed = $scriptError;
script.load.world.listAll = $troubleShootingDump; // List names and versions of all loaded world scripts at startup.
// These messages are logged whenever Oolite calls a JS script method or runs a legacy script, respectively.
$reportScriptEntry = no;
script.javaScript.call = $reportScriptEntry;
script.legacy.run = $reportScriptEntry;
script.legacy.run.badTarget = $error;
script.deprecated.scriptActionOnTarget = $scriptError; // Warning not to use scriptActionOnTarget:
script.unpermittedMethod = $scriptError;
sdl = no;
sdl.init.failed = $error;
sdl.init.audio.failed = $error;
searchPaths.dumpAll = $troubleShootingDump;
$shaderDebug = $shaderDebugOn;
$shaderError = $error;
shader.load.noShader = $error;
shader.uniform = $shaderDebug;
shader.uniform.set = inherit; // Successfully set a uniform.
shader.uniform.unSet = inherit; // A uniform went unset or was cleared (either because there was no matching uniform in the shader, or the new uniform could not be set up).
shader.uniform.badDescription = inherit; // A uniform specified in shipdata.plist could not be set up, because the configuration could not be understood.
shader.uniform.bind.failed = inherit; // Problem setting up uniform bound to an object property.
shader.uniform.unpermittedMethod = $shaderError;
// Auditing note: these next four are constructed and do not occur as literals.
shader.compile.failure = $shaderError;
shader.compile.validationFailure = $shaderError;
shader.link.failure = $shaderError;
shader.link.validationFailure = $shaderError;
ship.noPrimaryRole = no;
ship.escort = no;
ship.escort.accept = inherit;
ship.escort.reject = inherit;
ship.setup.docks = $oxpDevelopment; // Warnings for old-style virtual docks. Generally harmless in actual play.
ship.setUp.missiles = no; // Warnings when doing extra work to set up missiles without equipment.plist or shipdata.plist entries. Disabled because lots of OXPs trigger them, and there are fallbacks.
shipData.load.shipyard.unknown = yes; // Warning for when shipyard.plist entries do not have matching shipdata.plist entry.
shipData.load.begin = yes;
shipData.load.progress = no;
shipData.load.done = no;
shipData.load.error = $error;
shipData.load.warning = $error;
shipData.load.warning.badFlasher = inherit;
shipData.load.warning.flasher.badColor = inherit;
shipData.load.warning.flasher.badSize = inherit;
shipData.load.warning.flasher.badFraction = inherit;
shipData.load.warning.turret.badFireRate = inherit;
shipData.load.warning.turret.badWeaponRange = inherit;
shipData.load.warning.turret.badWeaponEnergy = inherit;
shipData.translateSubentity = no;
shipData.translateSubentity.flasher = inherit;
shipData.translateSubentity.standard = inherit;
sky.setup = no;
$soundError = $error;
$soundDebug = no;
$soundDebugVerbose = $soundDebug;
sound.customSounds = $soundDebug;
sound.customSounds.recursion = $soundError; // Circular dependency in customsounds.plist, e.g. [foo] = [bar], [bar] = [foo].
sound.load.success = $soundDebug;
// Mac-specific sound messages
sound.channel.cleanup.success = $soundDebugVerbose;
sound.channel.cleanup.failed = $soundError;
sound.channel.cleanup.failed.broken = inherit;
sound.channel.cleanup.failed.badState = inherit;
sound.channel.machPortError = $soundError;
sound.initialization.error = $soundError;
sound.mixer.outOfChannels = $soundError;
sound.mixer.inspector.loadFailed = $soundError;
sound.mixer.replacingBrokenChannel = $soundDebug;
sound.mixer.failedToConnectChannel = $soundError;
sound.music.iTunesIntegration.failed = $error;
sound.play.success = $soundDebugVerbose;
sound.play.failed = $soundError;
sound.play.failed.badReuse = inherit;
sound.play.failed.setupFailed = inherit;
sound.play.failed.auError = inherit;
sound.render.undexpectedNull = $soundError;
sound.streaming.refill = $soundDebugVerbose;
sound.streaming.loop = $soundDebug;
sound.streaming.underflow = $soundError;
sound.virtualringbuffer = $soundError;
sound.streaming.releaseContext = $soundDebug;
// SDL-specific sound messages
sound.load.failed = $soundError;
$speechDebug = $soundDebug;
speech.setup = $speechDebug;
speech.synthesis = $speechDebug;
startup.progress = no; // Startup progress stages.
loading.complete = yes;
station.launchShip.impossible = no; // generally cancelled launches due to station having no launch docks are uninteresting
strings.conversion = $scriptError; // Conversion of text to values (vectors, quaternions etc)
strings.conversion.vector = inherit;
strings.conversion.quaternion = inherit;
strings.conversion.vectorAndQuaternion = inherit;
strings.conversion.randomSeed = inherit;
strings.expand = $scriptError; // Errors encountered when converting [key] and %X-type markers in strings.
strings.expand.invalidData = inherit;
strings.expand.invalidJEscape = inherit;
strings.expand.invalidJEscape.range = inherit;
strings.expand.invalidSelector = inherit;
strings.expand.warning = yes;
strings.expand.warning.emptyKey = inherit;
strings.expand.warning.invalidOverride = inherit;
strings.expand.warning.outOfRangeKey = inherit;
strings.expand.warning.unbalancedClosingBracket = inherit;
strings.expand.warning.unbalancedOpeningBracket = inherit;
strings.expand.warning.unknownExpansion = inherit;
strings.expand.warning.unknownPercentEscape = inherit;
sun.nova = no; // Debug messages for nova
sun.nova.start = inherit;
sun.nova.end = inherit;
$textureDebug = no;
texture.dealloc = $textureDebug;
texture.planet.generate = $textureDebug;
texture.upload = $textureDebug;
texture.generator.queue = $textureDebug;
texture.generator.queue.failed = $error;
texture.load.asyncLoad = $textureDebug;
texture.load.asyncLoad.done = inherit;
texture.load.asyncLoad.exception = $error;
texture.load.noName = $error;
texture.load.rescale = $textureDebug;
texture.load.rescale.maxSize = inherit;
texture.load.unknownType = $error;
texture.reload = $textureDebug;
universe.findSystems.badDistance = $error;
universe.populate = no; // “Populating a system with…” message when generating a star system
universe.populate.witchspace = inherit;
universe.setup.badStation = $scriptError; // Message generated if the main station turns out not to be a station (for instance, this could happen if a non-station ship had the role coriolis).
universe.maxEntitiesDump = no; // Dumps all entities when universe is full (Can be quite verbose)
universe.profile = no;
universe.profile.update = inherit;
universe.profile.draw = inherit;
verifyOXP.verbose = yes;
}
Examples
- These are the only known examples:
1) SOTL Altmap OXP
{
"cim.sotl.debug" = yes;
"cim.sotl.error" = yes;
"cim.sotl.notice" = yes;
}
2) New Cargoes OXP
{
"CargoTypeExtension.debug" = "no";
}
Links
- Latest.log
- LogEvents OXP automatically adds more events to the Latest.log
- Ahruman's creation of the Logcontrol.plist (2007)