# ILogHandler

> Interface for custom log handler implementation.

## Definition

* **Type:** Interface
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public interface ILogHandler
```

## Remarks

ILogHandler interface to ease unit-testing and mocking of loggers.

## Examples

```csharp
using UnityEngine;
using System.Collections;
using System.IO;
using System;

public class MyFileLogHandler : ILogHandler
{
    private FileStream m_FileStream;
    private StreamWriter m_StreamWriter;
    private ILogHandler m_DefaultLogHandler = Debug.unityLogger.logHandler;

    public MyFileLogHandler()
    {
        string filePath = Application.persistentDataPath + "/MyLogs.txt";

        m_FileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
        m_StreamWriter = new StreamWriter(m_FileStream);

        // Replace the default debug log handler
        Debug.unityLogger.logHandler = this;
    }

    public void LogFormat(LogType logType, UnityEngine.Object context, string format, params object[] args)
    {
        m_StreamWriter.WriteLine(String.Format(format, args));
        m_StreamWriter.Flush();
        m_DefaultLogHandler.LogFormat(logType, context, format, args);
    }

    public void LogException(Exception exception, UnityEngine.Object context)
    {
        m_DefaultLogHandler.LogException(exception, context);
    }
}

public class MyGameClass : MonoBehaviour
{
    private static ILogger logger = Debug.unityLogger;
    private static string kTAG = "MyGameTag";
    private MyFileLogHandler myFileLogHandler;

    void Start()
    {
        myFileLogHandler = new MyFileLogHandler();

        logger.Log(kTAG, "MyGameClass Start.");
    }
}
```

## Methods

| Method                                                                                  | Description                                                        |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| [LogException](/engine/6000.6/script-reference/unityengine/iloghandler/logexception.md) | A variant of ILogHandler.LogFormat that logs an exception message. |
| [LogFormat](/engine/6000.6/script-reference/unityengine/iloghandler/logformat.md)       | Logs a formatted message.                                          |
