https://github.com/commandcracker/cc-logging
An logging library for Computer Craft
https://github.com/commandcracker/cc-logging
computercraft lua minecraft
Last synced: 9 months ago
JSON representation
An logging library for Computer Craft
- Host: GitHub
- URL: https://github.com/commandcracker/cc-logging
- Owner: Commandcracker
- License: mit
- Created: 2022-06-17T20:44:35.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-07-02T09:55:16.000Z (over 3 years ago)
- Last Synced: 2024-07-30T17:50:53.135Z (over 1 year ago)
- Topics: computercraft, lua, minecraft
- Language: Lua
- Homepage: https://commandcracker.github.io/CC-Logging/
- Size: 224 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# CC-Logging
[](https://github.com/Commandcracker/CC-Logging/actions/workflows/pages.yml)
An logging library for Computer Craft
**WARNING: Please Do not use CC-Logging in production, because it's currently in development!**
- **All Handler's will be reworked.**
- **Some classes will be renamed.**
- **Log levels will completely be overhauled.**
## Example
look at the [Documentation](https://commandcracker.github.io/CC-Logging/) for moor help and please remind that the documentation is incomplete.
```lua
local logging = require("logging")
local logger = logging.Logger.new(shell.getRunningProgram())
logger:debug("debug message")
logger:info("info message")
logger:warn("warn message")
logger:error("error message")
logger:critical("critical message")
```
## Custom Handler
```lua
local logging = require("logging")
local logger = logging.Logger.new(shell.getRunningProgram())
local CustomHandler = {}
function CustomHandler.new(formatter)
return setmetatable({ formatter = formatter }, { __index = CustomHandler })
end
function CustomHandler:handle(record)
local old_text_color = term.getTextColor()
local old_background_color = term.getBackgroundColor()
term.setTextColor(record.level.textcolor)
term.setBackgroundColor(record.level.backgroundcolor)
-- example functionality: reverse every message
record.message = string.reverse(record.message)
write(self.formatter:format(record))
term.setTextColor(old_text_color)
term.setBackgroundColor(old_background_color)
write("\n")
end
logger:addHandler(CustomHandler.new(logger.formatter))
logger:info("Message Handeld by Custom Handler")
```
## Websocket Example
### Server

```js
const WebSocket = require('ws');
const server = new WebSocket.Server({
port: 8080
});
let sockets = [];
server.on('connection', function (socket) {
sockets.push(socket);
// When you receive a message, log it
socket.on('message', function (msg) {
console.log(msg.toString());
});
// When a socket closes, or disconnects, remove it from the array.
socket.on('close', function () {
sockets = sockets.filter(s => s !== socket);
});
});
```
### Client

```lua
local logging = require("logging")
local logger = logging.Logger.new(shell.getRunningProgram())
local websocket = http.websocket("ws://127.0.0.1:8080")
local websocketHandler = logging.ColordWebsocketHandler.new(logger.formatter, websocket)
logger:addHandler(websocketHandler)
-- Default log Levels
logger:debug("logging.debug")
logger:info("logging.info")
logger:warn("logging.warn")
logger:error("logging.error")
logger:critical("logging.critical")
local function blankLine()
websocket.send(" ")
print()
end
-- Custom Level
blankLine()
local level = logging.Level.new {
name = "CUSTOM",
textcolor = colors.black,
backgroundcolor = colors.white
}
logger:log(level, "custom level")
-- Custom Formatter
blankLine()
local formatter = logging.Formatter.new(
"[%(time) %(name) %(levelname)] %(message)",
"%Y-%m-%d %H:%M:%S"
)
local custom_logger = logging.Logger.new {
name = shell.getRunningProgram(),
formatter = formatter
}
local custom_websocketHandler = logging.ColordWebsocketHandler.new(formatter, websocket)
custom_logger:addHandler(custom_websocketHandler)
custom_logger:info("custom formatter")
-- All Colors as log Levels
blankLine()
for key, value in pairs(colors) do
if type(value) == "number" then
logger:log(
logging.Level.new(
key:gsub("^%l", key.upper),
20,
value,
value == colors.black and colors.white or colors.black
),
key,
value
)
end
end
websocket.close()
```