     case test
 }
 
-class TestLogger {
+class TestLogger: LoggerSpec {
+    var messageWriter: LogMessageWriter = { _, _ in }
+    var errorObjectWriter: LogErrorObjectWriter?
     let levels: [LogLevel]
+    
     var lastLog: (level: LogLevel, message: String)?
     var lastError: Error?
     

        log.info(in: .view, "not yet configured")
        XCTAssertEqual(testLogger.last, "Nothing logged")
        
        LogCentral.loggers = [testLogger.logger]
        
        log.info(in: .view, "first log")
        XCTAssertEqual(testLogger.last, "[info] first log")

    }

    func testOneDualLevelLogger() {
        let infoAndDebugLogger = TestLogger([.info, .debug])
        
        log.info(in: .view, "not yet configured")
        XCTAssertEqual(infoAndDebugLogger.last, "Nothing logged")
        
        LogCentral.loggers = [infoAndDebugLogger]
        
        log.info(in: .view, "first log")
        XCTAssertEqual(infoAndDebugLogger.last, "[info] first log")
        
        log.debug(in: .view, "second log")
        XCTAssertEqual(infoAndDebugLogger.last, "[debug] second log")
    }
    
    func throwser() throws {
        throw TestError.test
    }
