Hi Jeremy, Thanks for your suggestion, that's looking like the easiest thing to do at this point. Its a shame the default one is not exposed in the basic API, it seems like such an obvious requirement, but re-inventing the wheel is good too :)
I really like the V8 engine, but its C++ leaves a lot to be desired I must say, it does not make it easy to do what should be trivial things. I am not knocking it, I am better off with it than without it :) Thanks, Gerry On Tuesday, February 5, 2019 at 3:47:05 PM UTC, Jeremy Bettis wrote: > > I have found the easiest thing is to delete the built in console > (global->Delete) and then add your own. > > Setting the console delegate requires using the inspector API and is > harder. > > On Tue, Feb 5, 2019, 8:12 AM <ca...@igalia.com <javascript:> wrote: > >> >> >> > On Feb 5, 2019, at 10:02 AM, Gerry Sweeney <gez...@gmail.com >> <javascript:>> wrote: >> > >> > Hello Caitlin, >> > >> > First of all, thank you for your response, and yes you are right I >> should have been far clearer in my question, please let me clarify. >> > >> > I have a process, is an x64 C++ application that normally runs as a >> Windows service or a Linux Deamon, its job is to provide a way for our user >> to write application logic in JavaScript, which we then invoke using a REST >> type API. Under normal circumstances, this project runs as a service, but >> when working on the code, it's essentially running as a Windows console >> application, anything emitted on stdout appears in the console window of >> the running process. The process is conceptually similar to a Node.js >> server process. >> > >> > This process is written in C++ and embeds V8, and in the current model, >> we create an Isolate and Context per API request made, and when we process >> a request, we are loading some JavaScript from a cache and executing it. >> As part of the embedding, we have created a number of native objects in >> C++ that are exposed in the JavaScript domain, classes that provide access >> to the underlying database, memory cache and other relates to web services. >> > >> > When we write JavaScript we have to debug it, and in the absence of >> using CDT for remote debugging (which we are in the process of >> implementing), we could at least do with using console.log(). We have >> implemented a websocket interface that on a call by call basis allows our >> C++ code to send arbitrary content back to the developer (of the >> JavaScript) workstation. >> > >> > So I need a way of implementing console.log() where I can redirect its >> output to my own websocket. My intention was to create an object called >> "console" and create a function on that object called "log()" and create an >> instance of that object in the global namespace, thus simulating the >> console.log() web developers are used in browsers. >> > >> > However, what I found is, without me creating these objects, they >> appear to already exist in the default implementation of v8. In other >> words, if I write console.log("Hello, World") the script runs without >> error, which tells me that the console object exists, and the log() >> function exists. >> > >> > So rather than re-invent the wheel and implement my own version of >> console.log() I thought it might just be simpler to find a way to capture >> the output of what already exists. Thing is, I have no idea where to >> start. >> > >> > Also, which console.log() implementation are you using? The one from >> d8-console.cc? One from Node.js or Chromium? A custom one? >> > I am assuming that the embedded V8 library includes by default the >> console object >> >> Ah I see you're right, this is now included in the initial context. It >> looks like you need to use `debug::SetConsoleDelegate(isolate, >> ConsoleDelegate*)` in order to provide the behaviour you want --- however, >> I'm not sure how this is exposed to the public API. Inspector folks could >> help more with that. >> >> It looks like by default, the Isolate's console_delegate_ is null, and >> the builtin console.log returns early if that's the case. >> >> > We are using 6.9.167 of the v8 engine in this project. >> > >> > I hope that makes more sense now - sorry for the poor quality initial >> question. >> > Gerry >> > >> > >> > -- >> > -- >> > v8-users mailing list >> > v8-u...@googlegroups.com <javascript:> >> > http://groups.google.com/group/v8-users >> > --- >> > You received this message because you are subscribed to the Google >> Groups "v8-users" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an email to v8-users+u...@googlegroups.com <javascript:>. >> > For more options, visit https://groups.google.com/d/optout. >> >> -- >> -- >> v8-users mailing list >> v8-u...@googlegroups.com <javascript:> >> http://groups.google.com/group/v8-users >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to v8-users+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.