mirror of
https://github.com/PixelGuys/Cubyz.git
synced 2025-08-03 03:06:55 -04:00
Init project and overwrite logging, so it logs to a file.
This commit is contained in:
commit
5ad35f4955
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
logs/
|
||||
saves/
|
||||
zig-out/
|
||||
zig-cache/
|
||||
settings.json
|
34
build.zig
Normal file
34
build.zig
Normal file
@ -0,0 +1,34 @@
|
||||
const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.build.Builder) void {
|
||||
// Standard target options allows the person running `zig build` to choose
|
||||
// what target to build for. Here we do not override the defaults, which
|
||||
// means any target is allowed, and the default is native. Other options
|
||||
// for restricting supported target set are available.
|
||||
const target = b.standardTargetOptions(.{});
|
||||
|
||||
// Standard release options allow the person running `zig build` to select
|
||||
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
|
||||
const mode = b.standardReleaseOptions();
|
||||
|
||||
const exe = b.addExecutable("Cubyzig", "src/main.zig");
|
||||
exe.setTarget(target);
|
||||
exe.setBuildMode(mode);
|
||||
exe.install();
|
||||
|
||||
const run_cmd = exe.run();
|
||||
run_cmd.step.dependOn(b.getInstallStep());
|
||||
if (b.args) |args| {
|
||||
run_cmd.addArgs(args);
|
||||
}
|
||||
|
||||
const run_step = b.step("run", "Run the app");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
|
||||
const exe_tests = b.addTest("src/main.zig");
|
||||
exe_tests.setTarget(target);
|
||||
exe_tests.setBuildMode(mode);
|
||||
|
||||
const test_step = b.step("test", "Run unit tests");
|
||||
test_step.dependOn(&exe_tests.step);
|
||||
}
|
36
src/main.zig
Normal file
36
src/main.zig
Normal file
@ -0,0 +1,36 @@
|
||||
const std = @import("std");
|
||||
|
||||
var logFile: std.fs.File = undefined;
|
||||
|
||||
pub fn log(
|
||||
comptime level: std.log.Level,
|
||||
comptime scope: @Type(.EnumLiteral),
|
||||
comptime format: []const u8,
|
||||
args: anytype,
|
||||
) void {
|
||||
if(scope != .default) {
|
||||
@compileError("Scopes are not supported.");
|
||||
}
|
||||
const color = comptime switch (level) {
|
||||
std.log.Level.err => "\x1b[31m",
|
||||
std.log.Level.info => "",
|
||||
std.log.Level.warn => "\x1b[33m",
|
||||
std.log.Level.debug => "\x1b[37;44m",
|
||||
};
|
||||
var buf: [4096]u8 = undefined;
|
||||
|
||||
std.debug.getStderrMutex().lock();
|
||||
defer std.debug.getStderrMutex().unlock();
|
||||
|
||||
const fileMessage = std.fmt.bufPrint(&buf, "[" ++ level.asText() ++ "]" ++ ": " ++ format ++ "\n", args) catch return;
|
||||
logFile.writeAll(fileMessage) catch return;
|
||||
|
||||
const terminalMessage = std.fmt.bufPrint(&buf, color ++ format ++ "\x1b[0m\n", args) catch return;
|
||||
nosuspend std.io.getStdErr().writeAll(terminalMessage) catch return;
|
||||
}
|
||||
|
||||
pub fn main() !void {
|
||||
logFile = std.fs.cwd().createFile("logs/latest.log", .{}) catch unreachable; // init logging.
|
||||
|
||||
std.log.info("Hello zig.", .{});
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user