Multi Agent
In the case you may want to have multiple loggers that serve different purposes, Birch can operate with multiple agents.
An example of multi agent is if you wanted the following:
- An agent strictly for analytics that drains to Elasticsearch.
- An agent for general purpose logging that drains to Logtail.
Each agent can have independent configurations and environments.
Getting Started
Instead of using the Birch
class, you will now use the Agent
class.
Each agent must have a unique directory.
Kotlin
import com.gruffins.birch.Agent
class MyApp: Application() {
lateinit var analytics: Agent
lateinit var logger: Agent
override fun onCreate() {
super.onCreate()
analytics = Agent("analytics").also {
it.init(this, "ANALYTICS_API_KEY", "ANALYTICS_PUBLIC_ENCRYPTION_KEY")
it.identifier = "your_user_id"
}
logger = Agent("logger").also {
it.init(this, "LOGGER_API_KEY", "LOGGER_PUBLIC_ENCRYPTION_KEY")
it.identifer = "your_user_id"
}
analytics.d { "app_started" }
logger.d { "Application started" }
}
}
Swift
import Birch
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var analytics: Agent!
var logger: Agent!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
analytics = Agent(directory: "analytics")
analytics.initialize("ANALYTICS_API_KEY", publicKey: "ANALYTICS_PUBLIC_ENCRYPTION_KEY")
analytics.identifier = "your_user_id"
logger = Agent(directory: "logger")
logger.initialize("LOGGER_API_KEY", publicKey: "LOGGER_PUBLIC_ENCRYPTION_KEY")
logger.identifier = "your_user_id"
return true
}
}