Logcat can tell you the PID (process id) and TID (thread id) of the process/thread that wrote the log message, which you can use to identify the offending app.
E.g. in Android Studio logcat gives me messages like this:
06-25 14:54:48.129 6276-6342/? E/libEGL﹕ validate_display:256 error 3001 (EGL_NOT_INITIALIZED)
06-25 14:54:48.129 6276-6342/? E/libEGL﹕ validate_display:256 error 3001 (EGL_NOT_INITIALIZED)
06-25 14:54:48.139 6276-6342/? E/libEGL﹕ eglMakeCurrent:688 error 3008 (EGL_BAD_DISPLAY)
The numbers 6276-6342
in this log trace are the PID and TID respectively. You can identify the process using e.g. adb shell "pid | grep 6276"
(substituting the correct process id from your logs).
If you're not seeing the PID in your logcat output, see the docs for logcat and logcat output format