whisper | Log4j v2 appender that suppresses messages | Email library

 by   eclecticlogic Java Version: Current License: Apache-2.0

kandi X-RAY | whisper Summary

kandi X-RAY | whisper Summary

whisper is a Java library typically used in Messaging, Email applications. whisper has no vulnerabilities, it has build file available, it has a Permissive License and it has high support. However whisper has 10 bugs. You can download it from GitHub.

Have you ever had something go wrong in your production server and had your Logback email appender immediately send you an email alert? You probably felt like a DevOps guru because you knew exactly what caused the error before anyone else. But then you realize that you've got a database issue and every user request from the app results in an error email (possibly more than one). Right at that time a backend process launches and tries to connect to the database and all hell breaks loose because your email server is now straining under the error email deluge - all 50,000 of them saying the same thing - some variation of "could not connect to database"!. Perhaps you weren't so fortunate to see this happen in real-time. Perhaps the first time you noticed it was when you got back into work and saw the 50,000 new emails awaiting your attention. And as you sit and delete page after page of email, you have this suspicion that perhaps somewhere in those 50,000 emails (all looking alike) there is a one-off error email that may be important and you are going to accidentally delete it. Whisper is your solution to controlling error email spam. Whisper acts as a pass through appender to your default SMTP appender for emails. When the frequency of a message exceeds the configured threshold, Whisper starts to suppress it. While suppression is on, Whisper will even send you periodic digests letting you know which messages were suppressed and how many of them were suppressed. When things gets resolved and your error message frequency drops, suppression is stopped and things resume as normal. All of this happens on a per log message basis (not including the timestamp and factoring away parameters if you used the parameterized SLF4j log format).

            kandi-support Support

              whisper has a highly active ecosystem.
              It has 29 star(s) with 4 fork(s). There are 5 watchers for this library.
              It had no major release in the last 6 months.
              There are 0 open issues and 5 have been closed. On average issues are closed in 10 days. There are no pull requests.
              It has a negative sentiment in the developer community.
              The latest version of whisper is current.

            kandi-Quality Quality

              whisper has 10 bugs (0 blocker, 0 critical, 5 major, 5 minor) and 14 code smells.

            kandi-Security Security

              whisper has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              whisper code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              whisper is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              whisper releases are not available. You will need to build from source code and install.
              Build file is available. You can build the component from source.
              Installation instructions are not available. Examples and code snippets are available.
              whisper saves you 380 person hours of effort in developing the same functionality from scratch.
              It has 905 lines of code, 79 functions and 20 files.
              It has medium code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed whisper and discovered the below as its top functions. This is intended to give you an instant insight into whisper implemented functionality, and help decide if they suit your requirements.
            • Computes the digest
            • Adds a digest message
            • Removes all messages
            • Record a message digest
            • Detaches the appender from this container
            • Detach the appender
            • Start the whisper manager
            • Convert digest frequency to milliseconds
            • Computes the suppression time for suppression
            • Converts the given encoded string to milliseconds
            • Start digest timer
            • Returns the message age
            • Gets the canonical message
            • Returns true if the appender is attached
            • Get appender by name
            • Stops all the appenders and stops the appenders
            • Add an appender to this delegate
            • Stop the digest timer
            • Converts the string to milliseconds
            • Adds an entry to the suppression queue
            • Returns the detail message
            • Stops the whisper manager
            • Log digest
            • Logs a message through all registered appenders
            • Append logging
            • Returns the number of messages for a given suppression expression
            Get all kandi verified functions for this library.

            whisper Key Features

            No Key Features are available at this moment for whisper.

            whisper Examples and Code Snippets

            No Code Snippets are available at this moment for whisper.

            Community Discussions


            Pictures in HTML
            Asked 2021-Jun-13 at 19:30

            I'm kinda new in HTML. I'm trying to make a page with HTML where I have text in the left of my page (the lyrics of a song) and then a picture that repeats itself at the right (just beside) of that text. But I want the picture to stop repeating itself at the bottom at some point. I want it to go just the length of the text, so I can write some thing below it, but the pictures just go endlessly. This is how I put the picture in the HTML file:



            Answered 2021-Jun-13 at 19:30

            You try to assign the repeating image pattern to the whole page body - which is why it continues forever. What you should do instead, is to create two DIVs (optionally wrapped inside a third, outer DIV), one for your text, one for the image, and make the CSS applicable only to the one with image. See this CodePen for an example code:

            Source https://stackoverflow.com/questions/67960740


            A stacked range plot using ggplot
            Asked 2021-Jun-11 at 14:11

            Suppose I wish to make a range plot with the design below using ggplot with the following dummy data:

            with following legend.



            Answered 2021-Jun-10 at 22:23

            You first create a dataframe where you have min and max for each combination of (xcat, base and col)

            Source https://stackoverflow.com/questions/67928634


            Menu hidden by DIV Tailwind
            Asked 2021-Jun-02 at 19:51

            I do not understand what I am doing wrong (Im a backend guy though). Using Tailwind on VueJS, This menu wont appear above the DIV. I have tried z-index and everything but nothing will make it appear. When I try and force the menu to the front of the screen it wont appear. I have no idea what I am doing wrong.

            Image Attached of issue



            Answered 2021-Jun-02 at 19:51

            The footer

            tag has overflow-hidden set, which cuts off any elements that extend out of the border of the . Since your menu should extend out the top of the , this isn't what you want. Removing this utility appears to fix the issue.

            When debugging designs with lots of these Tailwind classes all over the place, it can be helpful to look at things in your browser DevTools to avoid being overwhelmed or missing things.

            z-index can be tricky to work with, especially since it's commonly misunderstood. A lot of the time, you shouldn't need to use z-index, so seeing if other strategies work could reduce complexity and make your sites more resilient. For more information on z-index, check out Josh W. Comeau's excellent blog post.

            Source https://stackoverflow.com/questions/67809875


            Can't see property of typescript mixins
            Asked 2021-May-28 at 07:59

            I can't see (vs code/whisper) id of my property when I am using mixins.

            My code is:



            Answered 2021-May-28 at 07:59

            By passing Base as a parameter, you're using typeof User (the constructor function type) as TBase rather than User (the type of User instances). I think you just want User, by specifying the generic argument:

            Source https://stackoverflow.com/questions/67734803


            pip install json2html in python 3.5 not working
            Asked 2021-May-25 at 16:36

            I have python 3.5 and 2.7 installed, I only use python 3.4.

            When trying to install pip install json2html, it generates the error:



            Answered 2021-May-25 at 16:36

            Have you tried installing it by specifying the python version? python3.4 -m pip install SomePackage See this.

            Source https://stackoverflow.com/questions/67692034


            Group words by letter length?
            Asked 2021-May-23 at 17:35

            im attempting to group words by their length (e.g. number of characters in each words) so that the expected output can look something like this: 3:500, 4:232, 5:664, 6,:6311, 7:5553 etc.

            I have gotten the number of times certain words appear in the .txt file, though I don't know how to group these words into a tally of the number of letters in each words.

            I don't know how to explain further, but say for example if a three letter word (can be any three letter word like 'and', or 'the') appears in a .txt file 500 times, it will print the result as 3:500, and so on for 4 letter words, 5 letter words... and so on! Is there any way i can modify this existing code so that this can be possible?




            Answered 2021-May-22 at 12:42


            Count items inside array of objects
            Asked 2021-May-12 at 16:06

            I am using this code to fetch 100 trending public repos on GitHub.

            For every language, I calculated the The list of repos using the language, but I can't calculate the number of repos using this language

            part of my code



            Answered 2021-May-12 at 15:34

            Simplest approach would consist in changing your acc type from [] to {} that could carry a count property:

            Source https://stackoverflow.com/questions/67506480


            Sending a value from textfield in SwiftUI to remain once the textfield is clear
            Asked 2021-May-05 at 20:23

            I am fairly new to Swift and SwiftUI programming and I have come up again a weird issue.

            My goal is to read the variable in the text field and have the variable print as a comment once the user has clicked return (oncommit).

            I tried to use a single $comment variable but that updates both the Text result as soon as the user is typing in the text field.

            My goal is for the user to be able to type in the text field and the variable just appears in the section under the text field: ("Your Comment is:"")

            This is my first time posting on Stack Overflow sorry if I added too much code.



            Answered 2021-May-05 at 20:23


            AudioContext, getUserMedia, and websockets audio streaming
            Asked 2021-Apr-25 at 20:26

            I am trying to make an as-simple-as-possible Javascript frontend that will allow me to receive audio from a user's mic on a mouse click within a web browser using getUserMedia, modify it to a custom sample rate and monochannel, and stream it over a websocket to my server where it will be relayed to Watson Speech API.

            I have already built the websocket server using autobahn. I have been trying to make an updated client library drawing on whisper and ws-audio-api but both libraries seem outdated and include much functionality I don't need which I am trying to filter out. I am using XAudioJS to resample the audio.

            My current progress is in this Codepen. I am stuck and having trouble finding more clear examples.

            1. Both whisper and ws-audio-api initialize the AudioContext on page load, resulting in an error in at least Chrome and iOS as audio context must now be initialized as a response to user interaction. I have tried to move the AudioContext into the onClick event but this results in my having to click twice to begin streaming. I am currently using audio_context.resume() within the onClick event but this seems like a roundabout solution and results in the page showing it is always recording, even when it's not, which may make my users uneasy. How can I properly initiate the recording on click and terminate it on click?
            2. I have updated from the deprecated Navigator.getUserMedia() to MediaDevices.getUserMedia() but not sure if I need to alter the legacy vendor prefixes on lines 83-86 to match the new function?
            3. Most importantly, once I get a stream from getUserMedia, how can I properly resample it and forward it to the open websocket? I am a bit confused by the structure of bouncing the audio from node to node and I need help with lines 93-108.


            Answered 2021-Apr-25 at 20:26

            I found help here and was able to build a more modern JavaScript frontend based on the code from vin-ni's Google-Cloud-Speech-Node-Socket-Playground which I tweaked a bit. A lot of the existing audio streaming demos out there in 2021 are either outdated and/ or have a ton of "extra" features which raise the barrier to getting started with websockets and audio streaming. I created this "bare bones" script which reduces the audio streaming down to only four key functions:

            1. Open websocket
            2. Start Streaming
            3. Resample audio
            4. Stop streaming

            Hopefully this KISS (Keep It Simple, Stupid) demo can help somebody else get started with streaming audio a little faster than it took me.

            Here is my JavaScript frontend

            Source https://stackoverflow.com/questions/67118642


            How do I perform a join between two other joins
            Asked 2021-Apr-19 at 09:53

            I'd like to know how to do 2 execution plans: "traditional" execution plan joins (A with B) and then C. The "new" plan joins (A with B) then (A with C) and then joins the result of those joins so there would be 3 joins. How would I code the traditional and new plan in Oracle SQLPlus given the code below? I also need to measure the time complexity of both methods to show that the new plan takes less time, which I believe I just do with set timer on; The joins can be on whatever attributes work. Same with select statements. I made a artist, b album, c track, and d played.

            Here's the database:



            Answered 2021-Apr-18 at 06:13

            Your question doesn't make a lot of sense, because it's imposing bizarre restrictions that we can't really assess, but I don't mind telling you how to join two joins

            You already know how to join three tables in the normal/traditional/sensible sense. Here's how to join them as you ask:

            Source https://stackoverflow.com/questions/67143352

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install whisper

            You can download it from GitHub.
            You can use whisper like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the whisper component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .


            Whisper currently supports Logback. We hope to add support for log4j and log4jv2 in the future.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone eclecticlogic/whisper

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Email Libraries


            by PHPMailer


            by nodemailer


            by mjmlio


            by Foundry376


            by postalserver

            Try Top Libraries by eclecticlogic


            by eclecticlogicJava


            by eclecticlogicJava


            by eclecticlogicJava


            by eclecticlogicJava


            by eclecticlogicJava