Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. [Aufruf] sql 1.8.0 testen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Aufruf] sql 1.8.0 testen

    This topic has been deleted. Only users with topic management privileges can see it.
    • apollon77
      apollon77 last edited by

      Hey All,

      auf GitHub gibt es eine neue Version vom sql-Adapter. Änderungen gegenüber der 1.7.4 ist vor allem das ein Major-updare der sqllite3 Library und damit auch nodejs 10 Kompatibilität.

      Bitte mal testen. Es sollte (vor allem bei den sqlite3-Nutzern) immer noch alles tun.

      Danke

      1 Reply Last reply Reply Quote 0
      • foxriver76
        foxriver76 Developer last edited by

        Hi,

        leider habe ich mit dem Adapter wieder ein mir alt bekanntes Problem:

        TypeError: SQL[clients[msg.message.config.dbtype].name] is not a constructor
        
        

        beim testen der Verbindung. Adapter ist gestartet jedoch keine Verbindung zu SQL (Ampel gelb).

        Die Installation aus dem GIT läuft auch nur mit Fehlern durch:

        sudo iobroker url "https://github.com/ioBroker/ioBroker.sql/tarball/master" sql --debug
        install https://github.com/ioBroker/ioBroker.sql/tarball/master
        npm install https://github.com/ioBroker/ioBroker.sql/tarball/master --production --save --prefix "/opt/iobroker" (System call)
        npm WARN deprecated sprintf@0.1.5: The sprintf package is deprecated in favor of sprintf-js.
        npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
        
        > sqlite3@4.0.0 install /opt/iobroker/node_modules/sqlite3
        > node-pre-gyp install --fallback-to-build
        
        node-pre-gyp ERR! Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.0/node-v48-linux-arm.tar.gz 
        node-pre-gyp ERR! Pre-built binaries not found for sqlite3@4.0.0 and node@6.13.1 (node-v48 ABI, glibc) (falling back to source compile with node-gyp) 
        gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/6.13.1"
        gyp WARN EACCES attempting to reinstall using temporary dev dir "/opt/iobroker/node_modules/sqlite3/.node-gyp"
        make: Verzeichnis „/opt/iobroker/node_modules/sqlite3/build“ wird betreten
        make: Verzeichnis „/opt/iobroker/node_modules/sqlite3/build“ wird verlassen
        make: *** Keine Regel vorhanden, um das Ziel „../.node-gyp/6.13.1/include/node/common.gypi“, 
          benötigt von „Makefile“, zu erstellen.  Schluss.
        gyp ERR! build error 
        gyp ERR! stack Error: `make` failed with exit code: 2
        gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:285:23)
        gyp ERR! stack     at emitTwo (events.js:106:13)
        gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
        gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:219:12)
        gyp ERR! System Linux 4.14.34-v7+
        gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/opt/iobroker/node_modules/sqlite3/lib/binding/node-v48-linux-arm/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/opt/iobroker/node_modules/sqlite3/lib/binding/node-v48-linux-arm" "--node_abi_napi=node-v48"
        gyp ERR! cwd /opt/iobroker/node_modules/sqlite3
        gyp ERR! node -v v6.13.1
        gyp ERR! node-gyp -v v3.6.0
        gyp ERR! not ok 
        node-pre-gyp ERR! build error 
        node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/opt/iobroker/node_modules/sqlite3/lib/binding/node-v48-linux-arm/node_sqlite3.node --module_name=node_sqlite3 --module_path=/opt/iobroker/node_modules/sqlite3/lib/binding/node-v48-linux-arm --node_abi_napi=node-v48' (1)
        node-pre-gyp ERR! stack     at ChildProcess. <anonymous>(/opt/iobroker/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
        node-pre-gyp ERR! stack     at emitTwo (events.js:106:13)
        node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
        node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:920:16)
        node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:230:5)
        node-pre-gyp ERR! System Linux 4.14.34-v7+
        node-pre-gyp ERR! command "/usr/local/bin/node" "/opt/iobroker/node_modules/sqlite3/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
        node-pre-gyp ERR! cwd /opt/iobroker/node_modules/sqlite3
        node-pre-gyp ERR! node -v v6.13.1
        node-pre-gyp ERR! node-pre-gyp -v v0.9.0
        node-pre-gyp ERR! not ok 
        Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/opt/iobroker/node_modules/sqlite3/lib/binding/node-v48-linux-arm/node_sqlite3.node --module_name=node_sqlite3 --module_path=/opt/iobroker/node_modules/sqlite3/lib/binding/node-v48-linux-arm --node_abi_napi=node-v48' (1)
        iobroker@1.0.0 /opt/iobroker
        └─┬ iobroker.sql@1.8.0 
          ├─┬ mssql@3.3.0 
          │ ├── generic-pool@2.5.4 
          │ ├─┬ promise@7.3.1 
          │ │ └── asap@2.0.6 
          │ └─┬ tedious@1.14.0 
          │   ├─┬ babel-runtime@5.8.38 
          │   │ └── core-js@1.2.7 
          │   ├── big-number@0.3.1 
          │   ├─┬ bl@1.2.2 
          │   │ └─┬ readable-stream@2.3.6 
          │   │   ├── isarray@1.0.0 
          │   │   ├── process-nextick-args@2.0.0 
          │   │   └── string_decoder@1.1.1 
          │   ├─┬ readable-stream@2.3.6 
          │   │ ├── isarray@1.0.0 
          │   │ ├── process-nextick-args@2.0.0 
          │   │ └── string_decoder@1.1.1 
          │   └── sprintf@0.1.5 
          ├─┬ mysql@2.15.0 
          │ ├── bignumber.js@4.0.4 
          │ ├─┬ readable-stream@2.3.3 
          │ │ ├── isarray@1.0.0 
          │ │ └── string_decoder@1.0.3 
          │ └── sqlstring@2.3.0 
          ├─┬ pg@6.4.2 
          │ ├── buffer-writer@1.0.1 
          │ ├── js-string-escape@1.0.1 
          │ ├── packet-reader@0.3.1 
          │ ├── pg-connection-string@0.1.3 
          │ ├─┬ pg-pool@1.8.0 
          │ │ ├── generic-pool@2.4.3 
          │ │ └── object-assign@4.1.0 
          │ ├─┬ pg-types@1.13.0 
          │ │ ├── pg-int8@1.0.1 
          │ │ ├── postgres-array@1.0.2 
          │ │ ├── postgres-bytea@1.0.0 
          │ │ ├── postgres-date@1.0.3 
          │ │ └── postgres-interval@1.1.1 
          │ ├─┬ pgpass@1.0.2 
          │ │ └─┬ split@1.0.1 
          │ │   └── through@2.3.8 
          │ └── semver@4.3.2 
          └─┬ sql-client@0.7.0 
            ├── argf@0.0.1 
            └─┬ inote-util@0.8.1 
              ├─┬ nconf@0.7.2 
              │ ├── ini@1.3.5 
              │ └─┬ yargs@3.15.0 
              │   ├── camelcase@1.2.1 
              │   ├─┬ cliui@2.1.0 
              │   │ └── wordwrap@0.0.2 
              │   └── window-size@0.1.4 
              ├── node-uuid@1.4.8 
              ├─┬ remove@0.1.5 
              │ └─┬ seq@0.3.5 
              │   ├── chainsaw@0.0.9 
              │   └── hashish@0.0.4 
              └── seedrandom@2.4.3 
        
        npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sqlite3@4.0.0 (node_modules/sqlite3):
        npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sqlite3@4.0.0 install: `node-pre-gyp install --fallback-to-build`
        npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
        got /opt/iobroker/node_modules/iobroker.sql/admin
        upload [14] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/words.js words.js application/javascript
        upload [13] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/sql.png sql.png image/png
        upload [12] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/index_m.html index_m.html text/html
        upload [11] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/index.html index.html text/html
        upload [10] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/ru/translations.json i18n/ru/translations.json application/json
        upload [9] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/pt/translations.json i18n/pt/translations.json application/json
        upload [8] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/pl/translations.json i18n/pl/translations.json application/json
        upload [7] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/nl/translations.json i18n/nl/translations.json application/json
        upload [6] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/it/translations.json i18n/it/translations.json application/json
        upload [5] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/fr/translations.json i18n/fr/translations.json application/json
        upload [4] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/es/translations.json i18n/es/translations.json application/json
        upload [3] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/en/translations.json i18n/en/translations.json application/json
        upload [2] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/de/translations.json i18n/de/translations.json application/json
        upload [1] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/custom_m.html custom_m.html text/html
        upload [0] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/custom.html custom.html text/html</anonymous> 
        

        Beim hinzufügen gibts den gleichen Fehler:

        sudo iobroker add sql
        host.ioBroker-Pi-Moritz install adapter sql
        npm install --production (System call) in "/opt/iobroker/node_modules/iobroker.sql"
        npm WARN deprecated sprintf@0.1.5: The sprintf package is deprecated in favor of sprintf-js.
        npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
        node-pre-gyp ERR! Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.0/node-v48-linux-arm.tar.gz 
        node-pre-gyp ERR! Pre-built binaries not found for sqlite3@4.0.0 and node@6.13.1 (node-v48 ABI, glibc) (falling back to source compile with node-gyp) 
        gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/6.13.1"
        gyp WARN EACCES attempting to reinstall using temporary dev dir "/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/.node-gyp"
        make: *** Keine Regel vorhanden, um das Ziel „../.node-gyp/6.13.1/include/node/common.gypi“, 
          benötigt von „Makefile“, zu erstellen.  Schluss.
        gyp ERR! build error 
        gyp ERR! stack Error: `make` failed with exit code: 2
        gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:285:23)
        gyp ERR! stack     at emitTwo (events.js:106:13)
        gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
        gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:219:12)
        gyp ERR! System Linux 4.14.34-v7+
        gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/lib/binding/node-v48-linux-arm/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/lib/binding/node-v48-linux-arm" "--node_abi_napi=node-v48"
        gyp ERR! cwd /opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3
        gyp ERR! node -v v6.13.1
        gyp ERR! node-gyp -v v3.6.0
        gyp ERR! not ok 
        node-pre-gyp ERR! build error 
        node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/lib/binding/node-v48-linux-arm/node_sqlite3.node --module_name=node_sqlite3 --module_path=/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/lib/binding/node-v48-linux-arm --node_abi_napi=node-v48' (1)
        node-pre-gyp ERR! stack     at ChildProcess. <anonymous>(/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
        node-pre-gyp ERR! stack     at emitTwo (events.js:106:13)
        node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
        node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:920:16)
        node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:230:5)
        node-pre-gyp ERR! System Linux 4.14.34-v7+
        node-pre-gyp ERR! command "/usr/local/bin/node" "/opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
        node-pre-gyp ERR! cwd /opt/iobroker/node_modules/iobroker.sql/node_modules/sqlite3
        node-pre-gyp ERR! node -v v6.13.1
        node-pre-gyp ERR! node-pre-gyp -v v0.9.0
        node-pre-gyp ERR! not ok 
        npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sqlite3@4.0.0 (node_modules/sqlite3):
        npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sqlite3@4.0.0 install: `node-pre-gyp install --fallback-to-build`
        npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
        got /opt/iobroker/node_modules/iobroker.sql/admin
        upload [14] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/words.js words.js application/javascript
        upload [13] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/sql.png sql.png image/png
        upload [12] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/index_m.html index_m.html text/html
        upload [11] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/index.html index.html text/html
        upload [10] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/ru/translations.json i18n/ru/translations.json application/json
        upload [9] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/pt/translations.json i18n/pt/translations.json application/json
        upload [8] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/pl/translations.json i18n/pl/translations.json application/json
        upload [7] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/nl/translations.json i18n/nl/translations.json application/json
        upload [6] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/it/translations.json i18n/it/translations.json application/json
        upload [5] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/fr/translations.json i18n/fr/translations.json application/json
        upload [4] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/es/translations.json i18n/es/translations.json application/json
        upload [3] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/en/translations.json i18n/en/translations.json application/json
        upload [2] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/i18n/de/translations.json i18n/de/translations.json application/json
        upload [1] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/custom_m.html custom_m.html text/html
        upload [0] sql.admin /opt/iobroker/node_modules/iobroker.sql/admin/custom.html custom.html text/html
        host.ioBroker-Pi-Moritz object system.adapter.sql created
        host.ioBroker-Pi-Moritz object _design/custom created
        host.ioBroker-Pi-Moritz create instance sql
        host.ioBroker-Pi-Moritz object sql.0.info.connection created
        host.ioBroker-Pi-Moritz object sql.0.info created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.outputCount created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.inputCount created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.uptime created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.memRss created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.memHeapTotal created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.memHeapUsed created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.connected created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0.alive created
        host.ioBroker-Pi-Moritz object system.adapter.sql.0 created</anonymous> 
        

        Ich glaube eigentlich nicht, dass es mit der neuen Version des SQL-Adapter zusammenhängt.

        Eventuell hast du eine Idee Apollon?

        NPM 4.6.1

        Node v6.13.1

        beste Grüße

        fox

        1 Reply Last reply Reply Quote 0
        • BBTown
          BBTown last edited by

          über: npm install iobroker.sql –production

          ließ sich v.1.8.0 nicht istallieren, er verblieb auf v.1.7.4

          auch nicht bei Verwendung von:

          sudo iobroker upload sql

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            @BBTown:

            über: npm install iobroker.sql –production

            ließ sich v.1.8.0 nicht istallieren, er verblieb auf v.1.7.4

            auch nicht bei Verwendung von:

            sudo iobroker upload sql `

            die Installation von 1.8.0 ist noch nicht im NPM vorhanden du musst aus Github installieren :

            sudo iobroker url "https://github.com/ioBroker/ioBroker.sql/tarball/master" sql --debug
            
            1 Reply Last reply Reply Quote 0
            • BBTown
              BBTown last edited by

              @Dutchman:

              die Installation von 1.8.0 ist noch nicht im NPM vorhanden du musst aus Github installieren :

              sudo iobroker url "https://github.com/ioBroker/ioBroker.sql/tarball/master" sql --debug
              ```` `  danke dir Dutchman, dieses Zeilenkommando kannte ich noch nicht, hatte bisher von github nur über den Admin installiert
              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators last edited by

                und rein vorsorglich:

                nach Installation von Github (egal ob über die Konsole oder das Octocat-Icon im Admin) unbedingt einen Upload ausführen.

                Gruß

                Rainer

                1 Reply Last reply Reply Quote 0
                • BBTown
                  BBTown last edited by

                  @Homoran:

                  nach Installation von Github (egal ob über die Konsole oder das Octocat-Icon im Admin) unbedingt einen Upload ausführen. ` dieses mal hatte ich sogar daran gedacht 😉

                  1 Reply Last reply Reply Quote 0
                  • apollon77
                    apollon77 last edited by

                    Zu oben: am besten ohne —debug und Neustarten der Instanz nicht vergessen.

                    Upload nur nötig gesondert wenn man es am Ende nicht sieht.

                    1 Reply Last reply Reply Quote 0
                    • BBTown
                      BBTown last edited by

                      also insgesamt lautet deine Empfehlung dann folgendermaßen??

                      cd /opt/iobroker

                      iobroker stop sql

                      sudo iobroker url "https://github.com/ioBroker/ioBroker.sql/tarball/master" sql

                      iobroker start sql

                      und nur nach Bedarf:

                      sudo iobroker upload sql

                      1 Reply Last reply Reply Quote 0
                      • BBTown
                        BBTown last edited by

                        Mein erster Eindruck: - der SQL-Adapter v1.8.0 tut bisher was er soll

                        mySQL (MariaDB v5.5.57 auf QNAP-NAS)

                        phpMyAdmin v4.7.4

                        PHP-Version v5.6.33

                        1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 last edited by

                          Super. Ein User der SQLite verwendet wäre noch super er als Tester 😉

                          1 Reply Last reply Reply Quote 0
                          • foxriver76
                            foxriver76 Developer last edited by

                            @apollon77:

                            Super. Ein User der SQLite verwendet wäre noch super er als Tester 😉 `

                            So nachdem ich sqlite3 über npm neu installiert habe, geht es bei mir nun.

                            Läuft seit einer Stunde problemlos und schreibt fleißig in meine DB unter 1.8.0 via sqlite! Top, vielen dank für den Adapter 😉

                            1 Reply Last reply Reply Quote 0
                            • apollon77
                              apollon77 last edited by

                              @foxriver76:

                              So nachdem ich sqlite3 über npm neu installiert habe, geht es bei mir nun. `

                              Wie meinst du das? Hoffe hast den sql Adapter per github installiert .. oder wie?!

                              1 Reply Last reply Reply Quote 0
                              • foxriver76
                                foxriver76 Developer last edited by

                                @apollon77:

                                @foxriver76:

                                So nachdem ich sqlite3 über npm neu installiert habe, geht es bei mir nun. `

                                Wie meinst du das? Hoffe hast den sql Adapter per github installiert .. oder wie?! `

                                Jop natürlich, allerdings hatte ich einige Probleme -> siehe zweier Post in diesem Thread. Kam vermutlich durch js-Controller Update.

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                813
                                Online

                                31.7k
                                Users

                                79.8k
                                Topics

                                1.3m
                                Posts

                                5
                                14
                                1161
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo