
Vladimir
17.07.2016
20:11:56
А еще я бы после pipeTo() добавил recover, что бы если слик сдохнет хотя бы это увидеть

Anatoliy
17.07.2016
20:12:08
Эм... а как?

Denis
17.07.2016
20:12:23
pipeTo пришлет тебe Status.Failure
можно конечно сделать recover в другое сообщение

Google

Anatoliy
17.07.2016
20:12:52
case Failure(e) => log.error("Стеш не очистился")
Так я же вроде его смотрю?

Denis
17.07.2016
20:13:07
верно да
это я туплю что то )
тут рекавер не нужен

Vladimir
17.07.2016
20:13:52

Denis
17.07.2016
20:14:28
+1

Vladimir
17.07.2016
20:14:56
Логи стоит писать настолько полные, что бы без запуска в debug можно было понять что происходит с приложением, не важно даже если это домашний pet project

Anatoliy
17.07.2016
20:15:11
Спасибо, щас переделаю. Но вы сейчас назовете меня вообще плохими словами :) Есть еще вопрос)

Vladimir
17.07.2016
20:15:31
Лучше спроси :)

Anatoliy
17.07.2016
20:16:41
1) Надо логи с ошибками писать в файл - как это сделать я не понимаю.
2) Возможно можно настроить через конфиги что бы писалось в файл - я НЕ МОГУ подключить конфиги. Я просто не понимаю куда их писать. У меня подключение к БД выполнено таким образом:
val db = Database.forURL("jdbc:mariadb://mysql/dbname?rewriteBatchedStatements=true","user","pass",driver = "org.mariadb.jdbc.Driver",executor = AsyncExecutor("testExecutor", numThreads=20, queueSize=10000))
Как это можно исправить?

Denis
17.07.2016
20:17:04
1) http://doc.akka.io/docs/akka/2.4.8/scala/logging.html

Google

Anatoliy
17.07.2016
20:17:07
Я чесетно говоря уже очень много чего нагуглил, но как подключить конфиги - так и не увидел(

Wystan
17.07.2016
20:17:34
ActorLogging и потом стандартный logback.xml или как он там

Vladimir
17.07.2016
20:17:34
если настроишь logback то он будет по умолчанию смотреть в recources

Denis
17.07.2016
20:17:37
2) в src/main/resources кладешь application.conf
в нем пишешь конфиг (https://github.com/typesafehub/config)

Anatoliy
17.07.2016
20:18:30
положил logback в resources щас проверим
[INFO] [07/17/2016 22:18:34.811] [system-akka.actor.default-dispatcher-7] [akka://system/user/mainActor/DBActor] Убиваем записи во вкладке stash id: 89195d9d0b191728a2fe98f41b3ec311e288d2cf77051be800defc043e6f1f88
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!— encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default —>
<encoder>
<pattern>%d{YYYY-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
пример вывода и паттер по идее
Т.е. микросекунды показываться не должны
но они есть

Denis
17.07.2016
20:19:57
db {
connection = "jdbc:mariadb://mysql/dbname?rewriteBatchedStatements=true"
user = "user"
password = "pass"
}
val config = ConfigFactory.load()
config.getString("db.connection")

Vladimir
17.07.2016
20:19:58
А вообще я бы посоветовал начать не с написания проекта, а с чтения примеров. Для освоения акки и вообще typesafe стека, лучше всего начать отсюда: https://www.lightbend.com/community/core-tools/activator-and-sbt
Плюс можно использовать примеры проектов как начальную точку в своём проекте

Denis
17.07.2016
20:20:32
Верно

Anatoliy
17.07.2016
20:20:52
Читал я примеры, некоторые из них ну совсем разные что бы что-то понять когда вообще только начал. Видимо стоит поробовать еще раз

Denis
17.07.2016
20:22:14
просто добавить logback недостаточно

Anatoliy
17.07.2016
20:22:19
но в общем logback.xml не подцепился

Denis
17.07.2016
20:22:22
надо еще конфиг акки поправить

Anatoliy
17.07.2016
20:22:27
эм... а как его тогда выдернуть?

Wystan
17.07.2016
20:22:27
да примеры там мозговыносные. там пример для акторов - это расчет числа пи или типа того

Denis
17.07.2016
20:22:42
http://doc.akka.io/docs/akka/2.4.8/scala/logging.html

Anatoliy
17.07.2016
20:22:43
ну расчет числа пи - не так уж и сложно кстати)

Google

Denis
17.07.2016
20:22:58
1) libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.3"
2) akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}

Wystan
17.07.2016
20:23:10
а документации у акки почти везде шлак. например, в акка-кластер можно весь вечер курить, как там кластер запустить (ответ - два инстанса одного и того же кода с разными конфигами)

Denis
17.07.2016
20:23:33
Да ладно, нормальные доки там

Anatoliy
17.07.2016
20:23:47
там ЕСТЬ нормальные доки, но я не скажу что они там везде такие
про конфиг я кстати мучаюсь уже больше месяца - но так и не нашел ответа, вот надеюсь с вами щас получится это сделать

Denis
17.07.2016
20:24:12
я же уже написал )

Anatoliy
17.07.2016
20:24:13
пароли в коде - это нечто из разряда вон...

Denis
17.07.2016
20:24:18
добавь application.conf

Vladimir
17.07.2016
20:24:18
В акке очень хорошие доки, намного лучше чем очень много где

Anatoliy
17.07.2016
20:24:27
согласен что лучше

Vladimir
17.07.2016
20:24:45
у того же Slick что код что доки, полный ад

Anatoliy
17.07.2016
20:25:07
Эм... у меня там есть такое... ("org.slf4j" % "slf4j-nop" % "1.6.4").exclude("ch.qos.logback","logback-classic"), и я так понимаю что exclude там зря стоит?)

Wystan
17.07.2016
20:25:19
с конфигом в логгере не сразу понятно - согласен. акка не хавает логлевел из application.conf если у тебя logback.xmk стоит отвечает за логгинг

Denis
17.07.2016
20:25:47
может и не зря

Wystan
17.07.2016
20:26:13

Vladimir
17.07.2016
20:26:41
или когда хотят избежать конфликта версий библиотек

Anatoliy
17.07.2016
20:26:47
т.е. "ch.qos.logback" % "logback-classic" % "1.1.3" вытягивать все равно?

Wystan
17.07.2016
20:26:58
У меня в одном проекте если просто обновить akka-http/ akka-stream слетает логгинг :) я к тому, что сказать как сделать сейчас не могу - но проблема распространенная

Denis
17.07.2016
20:27:00
он у тебя уже подключен скорей всего

Google

Denis
17.07.2016
20:27:03
транзитивно

Anatoliy
17.07.2016
20:27:44
возможно, т.е. просто конф файл править остается?

Denis
17.07.2016
20:28:52
вроде да

Anatoliy
17.07.2016
20:29:02
сейчас увидим что будет

Denis
17.07.2016
20:29:20
"com.typesafe.akka" %% "akka-slf4j" % "2.4.8"

Anatoliy
17.07.2016
20:29:22
[error] (run-main-0) java.lang.ClassNotFoundException: akka.event.slf4j.Slf4jLoggingFilter
java.lang.ClassNotFoundException: akka.event.slf4j.Slf4jLoggingFilter
at java.lang.ClassLoader.findClass(ClassLoader.java:530)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[trace] Stack trace suppressed: run 'last poeapi/compile:run' for the full output.
java.lang.RuntimeException: Nonzero exit code: 1

Denis
17.07.2016
20:29:30
добавить надо

Anatoliy
17.07.2016
20:29:30
видимо добавлять придется

Denis
17.07.2016
20:29:50
дело не logback
добавить надо "com.typesafe.akka" %% "akka-slf4j" % “2.4.8”

Admin
ERROR: S client not available

Anatoliy
17.07.2016
20:30:22
а с ("org.slf4j" % "slf4j-nop" % "1.6.4").exclude("ch.qos.logback","logback-classic"), что тогда делать?

Denis
17.07.2016
20:30:26
ничего

Anatoliy
17.07.2016
20:31:02
ок, пробуем так, я уже просто не понимаю что оно от меня хочет и почему именно это. что безусловно не очень хорошо

Denis
17.07.2016
20:31:13
java.lang.ClassNotFoundException: akka.event.slf4j.Slf4jLoggingFilter
нету значит класса

Vladimir
17.07.2016
20:31:34
А запуск идет из IDE или через SBT ?

Denis
17.07.2016
20:31:35
вот ты его и добавил в akka-slf4j

Anatoliy
17.07.2016
20:31:50
вообще - через ide через sbt run

Denis
17.07.2016
20:31:58
да там зависимости не было нужной у проекта

Google

Vladimir
17.07.2016
20:32:43
IDe какая? есть ощущение что нужно сделать рефреш проекта, потому что то что вы правите в sbt файле не подцепляется

Anatoliy
17.07.2016
20:32:51
idea
фул версия

Vladimir
17.07.2016
20:33:34
обычно справа есть вкладка sbt там надо тыкнуть в refresh

Anatoliy
17.07.2016
20:33:47
вообще - вроде запустилось. но в логах я вообще ничего не вижу. просто нет логов
[info] Running Main
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Anatoliy/.ivy2/cache/org.slf4j/slf4j-nop/jars/slf4j-nop-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Anatoliy/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory]

Vladimir
17.07.2016
20:34:08
у вас бардак в зависимостях :)

Anatoliy
17.07.2016
20:34:31
вот я и говорю что не понимаю что и чего там от меня хочет
libraryDependencies ++= Seq(
"org.json4s" %% "json4s-native" % "3.3.0",
("org.slf4j" % "slf4j-nop" % "1.6.4").exclude("ch.qos.logback","logback-classic"),
"org.mariadb.jdbc" % "mariadb-java-client" % "1.3.6",
"com.typesafe.play" %% "play-slick" % "1.1.1",
"com.typesafe.slick" %% "slick" % "3.1.1",
"com.typesafe.akka" %% "akka-actor" % "2.4.6",
"com.typesafe" % "config" % "1.3.0",
"com.typesafe.akka" %% "akka-slf4j" % "2.4.8"
)
Вот зависимости

Vladimir
17.07.2016
20:35:11
Ох...

Anatoliy
17.07.2016
20:35:13
бардак тут видимо толкьо с логами...(

Wystan
17.07.2016
20:35:27
может тогда на SO спросить? с каким-то минимальным примером

Anatoliy
17.07.2016
20:35:38
SO?

Vladimir
17.07.2016
20:35:39
а зачем кусок play?

Anatoliy
17.07.2016
20:35:48
он позволяет со сликом работать

Wystan
17.07.2016
20:35:48
stackoverflow

Anatoliy
17.07.2016
20:36:29
я когда его добавлял сам удивлялся что он потребовался

Vladimir
17.07.2016
20:36:48
Play это огромный фреймворк который в общем случае совсем не нужен что бы использовать Slick

Vladimir
17.07.2016
20:38:28
Как логбэк настроишь, рекомендую логирование самого слика включить, иногда помогает проблему отловить (или хотя бы понять запускается запрос вообще или нет)

Vladimir
17.07.2016
20:38:29
Еще как минимум у вас могут быть проблемы из-за того что тащится две версии akka

Anatoliy
17.07.2016
20:39:01
эм... а где там две akka?

Vladimir
17.07.2016
20:39:24
"com.typesafe.akka" %% "akka-actor" % "2.4.6",
"com.typesafe.akka" %% "akka-slf4j" % "2.4.8"
.6 и .8