diff --git a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala
index a5ea5bf39a..2303112177 100644
--- a/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala
+++ b/akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala
@@ -458,7 +458,7 @@ private[akka] class LocalActorRefProvider private[akka] (
override val rootPath: ActorPath = RootActorPath(Address("akka", _systemName))
- private[akka] val log: LoggingAdapter = Logging(eventStream, "LocalActorRefProvider(" + rootPath.address + ")")
+ private[akka] val log: LoggingAdapter = Logging(eventStream, getClass.getName + "(" + rootPath.address + ")")
override val deadLetters: InternalActorRef =
_deadLetters.getOrElse((p: ActorPath) ⇒ new DeadLetterActorRef(this, p, eventStream)).apply(rootPath / "deadLetters")
diff --git a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala
index 7d9d600e91..dda19f0e3a 100644
--- a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala
+++ b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala
@@ -603,7 +603,7 @@ private[akka] class ActorSystemImpl(val name: String, applicationConfig: Config,
dynamicAccess.createInstanceFor[LoggingFilter](LoggingFilter, arguments).get
}
- val log: LoggingAdapter = new BusLogging(eventStream, "ActorSystem(" + name + ")", this.getClass, logFilter)
+ val log: LoggingAdapter = new BusLogging(eventStream, getClass.getName + "(" + name + ")", this.getClass, logFilter)
val scheduler: Scheduler = createScheduler()
diff --git a/akka-actor/src/main/scala/akka/io/Tcp.scala b/akka-actor/src/main/scala/akka/io/Tcp.scala
index 286832ec3b..d9cc16ae77 100644
--- a/akka-actor/src/main/scala/akka/io/Tcp.scala
+++ b/akka-actor/src/main/scala/akka/io/Tcp.scala
@@ -548,7 +548,7 @@ class TcpExt(system: ExtendedActorSystem) extends IO.Extension {
val WindowsConnectionAbortWorkaroundEnabled: Boolean = getString("windows-connection-abort-workaround-enabled") match {
case "auto" ⇒ Helpers.isWindows
- case _ => getBoolean("windows-connection-abort-workaround-enabled")
+ case _ ⇒ getBoolean("windows-connection-abort-workaround-enabled")
}
private[this] def getIntBytes(path: String): Int = {
diff --git a/akka-camel/src/main/scala/akka/camel/internal/DefaultCamel.scala b/akka-camel/src/main/scala/akka/camel/internal/DefaultCamel.scala
index 22d4b88d66..3b515ff38f 100644
--- a/akka-camel/src/main/scala/akka/camel/internal/DefaultCamel.scala
+++ b/akka-camel/src/main/scala/akka/camel/internal/DefaultCamel.scala
@@ -28,7 +28,7 @@ import akka.actor.{ ExtendedActorSystem, ActorRef, Props }
*/
private[camel] class DefaultCamel(val system: ExtendedActorSystem) extends Camel {
val supervisor = system.actorOf(Props[CamelSupervisor], "camel-supervisor")
- private[camel] implicit val log = Logging(system, "Camel")
+ private[camel] implicit val log = Logging(system, getClass.getName)
lazy val context: DefaultCamelContext = {
val ctx = settings.ContextProvider.getContext(system)
diff --git a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala
index 16ea5d6602..2d5c992477 100644
--- a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala
+++ b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala
@@ -97,7 +97,7 @@ class Cluster(val system: ExtendedActorSystem) extends Extension {
scala.collection.JavaConverters.setAsJavaSetConverter(selfRoles).asJava
private val _isTerminated = new AtomicBoolean(false)
- private val log = Logging(system, "Cluster")
+ private val log = Logging(system, getClass.getName)
// ClusterJmx is initialized as the last thing in the constructor
private var clusterJmx: Option[ClusterJmx] = None
diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala
index 3cc10bc815..73385c3a60 100644
--- a/akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala
+++ b/akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala
@@ -778,7 +778,7 @@ class SigarMetricsCollector(address: Address, decayFactor: Double, sigar: AnyRef
private[cluster] object MetricsCollector {
def apply(system: ExtendedActorSystem, settings: ClusterSettings): MetricsCollector = {
import settings.{ MetricsCollectorClass ⇒ fqcn }
- def log = Logging(system, "MetricsCollector")
+ def log = Logging(system, getClass.getName)
if (fqcn == classOf[SigarMetricsCollector].getName) {
Try(new SigarMetricsCollector(system)) match {
case Success(sigarCollector) ⇒ sigarCollector
diff --git a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala
index 5ff64f54b3..88ce17c12a 100644
--- a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala
+++ b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSharding.scala
@@ -1386,11 +1386,11 @@ object ShardCoordinator {
*/
sealed trait CoordinatorMessage
/**
- * `ShardRegion` registers to `ShardCoordinator`, until it receives [[RegisterAck]].
+ * `ShardRegion` registers to `ShardCoordinator`, until it receives [[RegisterAck]].
*/
@SerialVersionUID(1L) final case class Register(shardRegion: ActorRef) extends CoordinatorCommand
/**
- * `ShardRegion` in proxy only mode registers to `ShardCoordinator`, until it receives [[RegisterAck]].
+ * `ShardRegion` in proxy only mode registers to `ShardCoordinator`, until it receives [[RegisterAck]].
*/
@SerialVersionUID(1L) final case class RegisterProxy(shardRegionProxy: ActorRef) extends CoordinatorCommand
/**
diff --git a/akka-docs/rst/project/migration-guide-2.3.x-2.4.x.rst b/akka-docs/rst/project/migration-guide-2.3.x-2.4.x.rst
index 6b7068e38d..19f45cfd78 100644
--- a/akka-docs/rst/project/migration-guide-2.3.x-2.4.x.rst
+++ b/akka-docs/rst/project/migration-guide-2.3.x-2.4.x.rst
@@ -131,3 +131,12 @@ In order to make cluster routers smarter about when they can start local routees
``nrOfInstances`` defined on ``Pool`` now takes ``ActorSystem`` as an argument.
In case you have implemented a custom Pool you will have to update the method's signature,
however the implementation can remain the same if you don't need to rely on an ActorSystem in your logic.
+
+Logger names use full class name
+================================
+Previously, few places in akka used "simple" logger names, such as ``Cluster`` or ``Remoting``.
+Now they use full class names, such as ``akka.cluster.Cluster`` or ``akka.remote.Remoting``,
+in order to allow package level log level definitions and ease source code lookup.
+In case you used specific "simple" logger name based rules in your ``logback.xml`` configurations,
+please change them to reflect appropriate package name, such as
+```` or ````
diff --git a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala
index c73fdbf247..ed0290c24c 100644
--- a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala
+++ b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Conductor.scala
@@ -389,7 +389,7 @@ private[akka] class Controller(private var initialParticipants: Int, controllerP
val settings = TestConductor().Settings
val connection = RemoteConnection(Server, controllerPort, settings.ServerSocketWorkerPoolSize,
- new ConductorHandler(settings.QueryTimeout, self, Logging(context.system, "ConductorHandler")))
+ new ConductorHandler(settings.QueryTimeout, self, Logging(context.system, classOf[ConductorHandler].getName)))
/*
* Supervision of the BarrierCoordinator means to catch all his bad emotions
diff --git a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala
index e947a8e7be..6e81c91372 100644
--- a/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala
+++ b/akka-multi-node-testkit/src/main/scala/akka/remote/testconductor/Player.scala
@@ -151,7 +151,7 @@ private[akka] class ClientFSM(name: RoleName, controllerAddr: InetSocketAddress)
val settings = TestConductor().Settings
val handler = new PlayerHandler(controllerAddr, settings.ClientReconnects, settings.ReconnectBackoff,
- settings.ClientSocketWorkerPoolSize, self, Logging(context.system, "PlayerHandler"),
+ settings.ClientSocketWorkerPoolSize, self, Logging(context.system, classOf[PlayerHandler].getName),
context.system.scheduler)(context.dispatcher)
startWith(Connecting, Data(None, None))
diff --git a/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala b/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala
index 0ed665220f..93d32c6bf9 100644
--- a/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala
+++ b/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala
@@ -178,7 +178,7 @@ private[akka] class RemoteActorRefProvider(
_internals = internals
remotingTerminator ! internals
- _log = Logging(eventStream, "RemoteActorRefProvider")
+ _log = Logging(eventStream, getClass.getName)
// this enables reception of remote requests
transport.start()
diff --git a/akka-remote/src/main/scala/akka/remote/Remoting.scala b/akka-remote/src/main/scala/akka/remote/Remoting.scala
index 85a51d13aa..e4d9e2c97f 100644
--- a/akka-remote/src/main/scala/akka/remote/Remoting.scala
+++ b/akka-remote/src/main/scala/akka/remote/Remoting.scala
@@ -129,7 +129,7 @@ private[remote] class Remoting(_system: ExtendedActorSystem, _provider: RemoteAc
override def localAddressForRemote(remote: Address): Address = Remoting.localAddressForRemote(transportMapping, remote)
- val log: LoggingAdapter = Logging(system.eventStream, "Remoting")
+ val log: LoggingAdapter = Logging(system.eventStream, getClass.getName)
val eventPublisher = new EventPublisher(system, log, RemoteLifecycleEventsLogLevel)
private def notifyError(msg: String, cause: Throwable): Unit =
diff --git a/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala b/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala
index 0e29a4ff58..216df21c90 100644
--- a/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala
+++ b/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala
@@ -57,7 +57,7 @@ private[remote] class FailureInjectorTransportAdapter(wrappedTransport: Transpor
extends AbstractTransportAdapter(wrappedTransport)(extendedSystem.dispatcher) with AssociationEventListener {
private def rng = ThreadLocalRandom.current()
- private val log = Logging(extendedSystem, "FailureInjector (gremlin)")
+ private val log = Logging(extendedSystem, getClass.getName)
private val shouldDebugLog: Boolean = extendedSystem.settings.config.getBoolean("akka.remote.gremlin.debug")
@volatile private var upstreamListener: Option[AssociationEventListener] = None
diff --git a/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala b/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
index eaa80fd6e7..16ca6e605f 100644
--- a/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
+++ b/akka-testkit/src/main/scala/akka/testkit/CallingThreadDispatcher.scala
@@ -130,7 +130,7 @@ class CallingThreadDispatcher(_configurator: MessageDispatcherConfigurator) exte
import CallingThreadDispatcher._
import configurator.prerequisites._
- val log = akka.event.Logging(eventStream, "CallingThreadDispatcher")
+ val log = akka.event.Logging(eventStream, getClass.getName)
override def id: String = Id