diff --git a/app/logbook/olog/client-es/src/main/java/org/phoebus/olog/es/api/OlogClient.java b/app/logbook/olog/client-es/src/main/java/org/phoebus/olog/es/api/OlogClient.java index 6220e789f0..cf5123bc99 100644 --- a/app/logbook/olog/client-es/src/main/java/org/phoebus/olog/es/api/OlogClient.java +++ b/app/logbook/olog/client-es/src/main/java/org/phoebus/olog/es/api/OlogClient.java @@ -55,9 +55,12 @@ */ public class OlogClient implements LogClient { private static final Logger logger = Logger.getLogger(OlogClient.class.getName()); - private final WebResource service; + private static final String OLOG_CLIENT_INFO_HEADER = "X-Olog-Client-Info"; + private static final String CLIENT_INFO = + "CS Studio " + org.phoebus.ui.application.Messages.AppVersion + " on " + System.getProperty("os.name"); + /** * Builder Class to help create a olog client. * @@ -206,6 +209,7 @@ private LogEntry save(LogEntry log, LogEntry inReplyTo) throws LogbookException clientResponse = service.path("logs") .queryParams(queryParams) .type(MediaType.APPLICATION_JSON) + .header(OLOG_CLIENT_INFO_HEADER, CLIENT_INFO) .accept(MediaType.APPLICATION_XML) .accept(MediaType.APPLICATION_JSON) .put(ClientResponse.class, OlogObjectMappers.logEntrySerializer.writeValueAsString(log)); @@ -303,6 +307,7 @@ private SearchResult findLogs(MultivaluedMap searchParams) throw // Convert List into List final OlogSearchResult ologSearchResult = OlogObjectMappers.logEntryDeserializer.readValue( service.path("logs/search").queryParams(searchParams) + .header(OLOG_CLIENT_INFO_HEADER, CLIENT_INFO) .accept(MediaType.APPLICATION_JSON) .get(String.class), OlogSearchResult.class); diff --git a/app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/propertyproviders/ClientEnvironmentPropertyProvider.java b/app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/propertyproviders/ClientEnvironmentPropertyProvider.java new file mode 100644 index 0000000000..bf953a4792 --- /dev/null +++ b/app/logbook/olog/ui/src/main/java/org/phoebus/logbook/olog/ui/propertyproviders/ClientEnvironmentPropertyProvider.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2020 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.phoebus.logbook.olog.ui.propertyproviders; + +import org.phoebus.logbook.Property; +import org.phoebus.logbook.olog.ui.write.LogPropertyProvider; +import org.phoebus.olog.es.api.model.OlogProperty; +import org.phoebus.ui.application.Messages; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class ClientEnvironmentPropertyProvider implements LogPropertyProvider { + + @Override + public Property getProperty() { + String hostname = "N/A"; + try { + hostname = InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + Logger.getLogger(ClientEnvironmentPropertyProvider.class.getName()) + .log(Level.INFO, "Unable to determine hostname", e); + } + Map attributes = new HashMap<>(); + attributes.put("Hostname", hostname); + attributes.put("Client", "Phoebus " + Messages.AppVersion); + Property property = new OlogProperty("Client Environment", attributes); + return property; + } +} diff --git a/app/logbook/olog/ui/src/main/resources/META-INF/services/org.phoebus.logbook.olog.ui.write.LogPropertyProvider b/app/logbook/olog/ui/src/main/resources/META-INF/services/org.phoebus.logbook.olog.ui.write.LogPropertyProvider new file mode 100644 index 0000000000..b04d0a06e4 --- /dev/null +++ b/app/logbook/olog/ui/src/main/resources/META-INF/services/org.phoebus.logbook.olog.ui.write.LogPropertyProvider @@ -0,0 +1,19 @@ +# +# Copyright (C) 2020 European Spallation Source ERIC. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +org.phoebus.logbook.olog.ui.propertyproviders.ClientEnvironmentPropertyProvider \ No newline at end of file