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 wrote: > > > > On Feb 5, 2019, at 10:02 AM, Gerry Sweeney <gezz...@gmail.com> 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-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. > > -- > -- > 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. > -- -- 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.
smime.p7s
Description: S/MIME Cryptographic Signature